下面的 代码是 boost 正则匹配后 取出 匹配字符 //提取子串
  boost::cmatch mat;
  boost::regex reg( szStr );
  bool r=boost::regex_match( szStr, mat, reg);
  if(r) //如果匹配成功
  {
  //显示所有子串
  for(boost::cmatch::iterator itr=mat.begin(); itr!=mat.end(); ++itr)
  {
       //这里面的要怎么写  怎么读取出匹配的字符,别人说是在 *itr 或mat[0]中,我用AfxMessageBox()把这两个值输出 都报错,说是类型不对,我是VS2010  怎么样才能正常输出 ,谢谢大家了。
  }
  }

解决方案 »

  1.   

    没有用过boot,浏览了下两个网页:
    http://blog.csdn.net/stephen_yin/article/details/6731545
    http://sc.ppmai.com/index.php/loreal/1233.htmlregex_match算法用来测试一个字符串是否完全匹配正则式。让我们来看一下regex_match的使用:if (regex_match(str, m, re)){    ...}str是一个字符串,可以是string,wstring,char *或者wchar_t *m是match_results,它通过引用传入参数,来保存匹配的结果,m要和str的类型匹配,可以是smatch,wsmatch,cmatch或wcmatch,用来分别对应string,wstring,char *或者wchar_t*的str。re就是正则表达式了,一般来说是regex或wregex。那么你的问题是:mat没有正确的赋给AfxMessageBox()这样试试:CString tempmat=mat;//或者CString tempmat(mat);或者char tempstr[100];strcpy(temstr,mat);
    然后将tempmat传给AfxMessageBox()
      

  2.   

    大哥,你QQ 多少, 或者 你加我QQ  29 29 24290