VC6+BOOST 如何获取返回的多个结果?

是这样的,我的文本内容是"冷风1冷风2冷风3" 正则表达式是"冷风"

这样应试有3个匹配结果,我应该怎样打印出所有符合条件的结果呢?

我在VC6+BOOST环境下写的代码如下,但只输出了一个结果


#include <boost/regex.hpp>
#include <iostream>
#include <windows.h>

using namespace boost;

regex expression("冷风");

int main(int argc, char* argv[])
{
    char szBuf[]="冷风1冷风2冷风3";

    cmatch what;
    if(regex_search(szBuf, what, expression))
    {
        for (int i=0;i<what.size();i++)
        {
            MessageBox(0,what.str().c_str(),0,0);
        }
    }
    else
    {
        MessageBox(0,"有错误发生",0,0);
    }
    return 0;
}


Re: VC6+BOOST 如何获取返回的多个结果?
发表:冷风,2009-3-30 6:37:06

回复

 
希望对其它朋友有帮助 我的Email  xo0888@tom.com

#include <boost/regex.hpp>
#include <iostream>
#include <windows.h>
using namespace std;

using namespace boost;

regex expression("冷风");

int main(int argc, char* argv[])
{
    std::string szBuf="冷风1冷风2冷风3";
   
    smatch what;

    std::string::const_iterator _start    = szBuf.begin();
    std::string::const_iterator _end    = szBuf.end();

   
    while(regex_search(_start,_end, what, expression))
    {
        std::string msg(what[0].first, what[0].second);
        MessageBox(0,msg.c_str(),0,0);
        _start = what[0].second;
    }
    return 0;
}