设为首页 加入收藏

TOP

std::tr1全身都是宝
2014-11-19 16:22:26 】 浏览:2743
Tags:std::tr1 全身 都是宝

  今日因为对项目进行重构,开始接触到std::tr1下的一些内容,开始对自己以前不太熟悉的泛型编程有了一些比较深入的了解。最近用到了tr1名字空间下的mem_fn,regex都在我们对项目的重构中起了重要的作用。tr1成为传统C++的有益补充。这里我们来看一下我利用regex对原来几个函数的重构。


  首先是一个判断一个字符串是否是一个数字的函数,在原来的实现中,我的检查并不完全,有时候又漏桶。利用regex,就可以很好地覆盖各种情况,完成比较严密的数字检查。我的项目中,对数字的要求是浮点数或者是浮点数加上字符后缀。列入,0.124,451.2A,-34.4TD等都是合法的数字。我在网络流传广泛的正则表达式的基础上做了些修改,轻松完成了这个函数。


  bool GridColChecker::IsNumber( wstring strText )


  {


  // check character or number


  trim(strText);


  wregex rx(_T("^- ([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0 \\.0+|0|[1-9]\\d*)[A-Z]{0,2}$"));


  //wregex rx(_T("^- \\d*[.]\\d*[A-Z]{0,2}$"));


  return regex_match(strText, rx );


  /*


  int nCheck = 0; // first char


  if (strText.size() >= 2)


  {


  nCheck = 1; // second char


  }


  if(strText.size()== 0)


  {


  return false;


  }


  wchar_t cCheckChar = strText.at(nCheck);


  if (!isdigit( cCheckChar)


  && cCheckChar != '.')


  {


  return false;


  }


  return true;


  */


  }


  从代码中我们可以看到,只需要两航代码,实现了原来需要数十行代码的功能,并且更加严密。嗯,tr1真是全身都是宝。tr1还包含很多好东西,继续挖掘!


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇钩子技术、HOOK技术在VC编程中的.. 下一篇VisualC++tr1中的shared_ptr和随..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目