在vc++中使用boost的示例

来源:赵克立博客 分类: C/C++ 标签:boostC/C++发布时间:2014-07-11 19:07:04最后更新:2014-07-11 20:30:05浏览:3453
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2014-07-11 20:30:05
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

首先要在开发环境下配置好boost

然后

#include <boost/regex.hpp>

下面是boost中查找字符串的功能

boost::regex_search 功能是查找字符串有两种模式

第一种不要迭代器的:这种只能查找第一个匹配的字符串后面的就查不到啦

如下:


	string str="我爱你要我是你的888我爱你要我999是你的";
	boost::regex el("(要)(.*?)(的)");
	boost::smatch matches;       
	if(boost::regex_search(str, matches,el)){
		logoutput((matches[0].str().c_str()));
		logoutput((matches[1].str().c_str()));
		logoutput((matches[2].str().c_str()));
		logoutput((matches[3].str().c_str()));
	}
上面代码输出结果为 
要我是你的
要
我是你
的
matches[0]是对正则的完整匹配
matches[1]
matches[2]
matches[3]

后面是的子表达式的内容



第二种使用迭代器:可以查 找到所有匹配的字符串

如下:

	//使用迭代器查找所有
	string str="我爱你要我是你的888我爱你要我999是你的";
	string::const_iterator start = str.begin();
	string::const_iterator end = str.end();
	boost::regex el("(要)(.*?)(的)");
	boost::smatch matches;       
	//循环查找所有字符串
	while(boost::regex_search(start,end, matches,el)){
		logoutput((matches[0].str().c_str()));
		logoutput((matches[1].str().c_str()));
		logoutput((matches[2].str().c_str()));
		logoutput((matches[3].str().c_str()));
		start=matches[0].second;//更新查找的开始位置
	}



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python