c++ string iterators incompatible
来源:互联网 发布:淘宝宝贝保护不被删除 编辑:程序博客网 时间:2024/06/08 00:04
参考内容:
http://bingxinye1.blog.163.com/blog/static/168797098201332294321491/
vc2005 对于迭代器的匹配是非常严格的,通常这种错误是因为两个不同的迭代器操作同一个 vector,或者是因为迭代器在遍历vector时,vector的链表改变了,就会引发这种错误,比如vector在遍历的途中,别的位置push_back()一个元素,这时迭代器就失效了,导致错误。
例如:在调用函数的里面不要再定义并使用针对同一个string对象的迭代器...
//0615bool GetFirstReInfo_model_one(string str,string::const_iterator it,string::const_iterator end,EmailBody_ReInfo *re_info){cout << "GetFirstReInfo by Model_one:" << endl;boost::regex expression("((On)(\\s)(.*?)(AM|PM)(.*?)([A-Za-z0-9.-]+@[A-Za-z0-9-]+[.\\w+]+)(.*?)(wrote))|((At)(\\s)(.*?)(,)(.*?)([A-Za-z0-9.-]+@[A-Za-z0-9-]+[.\\w+]+)(.*?)(wrote))|((在\\s)([0-9-]+(.*?)[0-9:]+)(.*?)([A-Za-z0-9.-]+@[A-Za-z0-9-]+[.\\w+]+)(.*?)(写道))");boost::smatch what;string re_date = "",re_sender = "";//注:再对string str定义新的起始迭代器,并对该string对象进行迭代操作将报错 //string::const_iterator it = str.begin();//string::const_iterator end = str.end();while(boost::regex_search(it,end,what,expression)){if(what[1].matched){//cout << what[1].str() << endl;re_date = what[4].str() + what[5].str();re_sender = what[7].str();}else if(what[10].matched){//cout << what[10].str() << endl;re_date = what[13].str();re_sender = what[16].str();}else if(what[19].matched){//cout << what[19].str() << endl;re_date = what[21].str();re_sender = what[24].str();}it = what[0].second;break;}if(re_date != "" && re_sender != ""){(*re_info).Re_Sender = re_sender;(*re_info).Re_SendDate = re_date;return true;}elsereturn false;}bool GetFirstReInfo_model_two(string str,string::const_iterator it,string::const_iterator end,EmailBody_ReInfo *re_info){cout << "GetFirstReInfo by model_two ..." << endl;//regex expression of model twoboost::regex exp1("(发件人)(.*?)([A-Za-z0-9.-]+@[A-Za-z0-9-]+[.\\w+]+)(.*?)(发送日期|日期|发送时间)(.*?)([0-9]+(年)[0-9]+(月)[0-9]+(日)(.*?)[0-9]+(点|:)[0-9]+(分)?)");// (分)? 0 or 1 boost::regex exp2("(From)(.*?)([A-Za-z0-9.-]+@[A-Za-z0-9-]+[.\\w+]+)(.*?)(Date)(.*?)((Mon|Tue|Wed|Thu|Fri|Sat|Sun)(.*?)(AM|PM))");boost::regex exp3("(From)(.*?)([A-Za-z0-9.-]+@[A-Za-z0-9-]+[.\\w+]+)(.*?)(Date)(.*?)([0-9]+-[0-9]+-[0-9]+\\s[0-9]+:[0-9]+:[0-9]+)");//boost::smatch what;string re_date = "",re_sender = "";//string::const_iterator it = str.begin();//string::const_iterator end = str.end();if(boost::regex_search(it,end,what,exp1)){re_date = what[3].str();re_sender = what[7].str();}else if(boost::regex_search(it,end,what,exp2)){re_date = what[3].str();re_sender = what[7].str();}else if(boost::regex_search(it,end,what,exp3)){re_date = what[3].str();re_sender = what[7].str();}if(re_date != "" && re_sender != ""){(*re_info).Re_Sender = re_sender;(*re_info).Re_SendDate = re_date;return true;}elsereturn false;}//match "On/At; From and other equivalent Chinese characters"bool GetFirstReInfo_model(string str,EmailBody_ReInfo *re_info){boost::regex exp("(On|At|在)|(From|发件人)");//**** (str1)|(str2) not ((str1)|(str2))boost::smatch what;string::const_iterator it = str.begin();string::const_iterator end = str.end();while(boost::regex_search(it,end,what,exp)){it = what[0].first;//**cout << "what[1]:" << what[1].str() << endl;cout << "what[2]:" << what[2].str() << endl;if(what[1].matched){if(GetFirstReInfo_model_one(str,it,end,re_info))return true;else it = what[0].second;}else if(what[2].matched){if(GetFirstReInfo_model_two(str,it,end,re_info))return true;elseit = what[0].second;}}return false;}
0 0
- c++ string iterators incompatible
- string iterators incompatible
- 【C++】Runtime error:iterators incompatible 迭代器类型不一致
- vector iterators incompatible
- vector iterators incompatible
- vector iterators incompatible
- vector iterators incompatible问题
- vector iterators incompatible
- vector iterators incompatible
- string 不区分大小写比较,出现“string iterators incompatible”debug错误
- 关于list iterators incompatible/vector iterators incompatible 报错总结
- 迭代器vector iterators incompatible错误;
- 运行出错: map/set iterators incompatible
- "vector iterators incompatible"及一些感想
- c++报错:list iterators incompatible
- Vector发现的一个使用细节:vector iterators incompatible(转)
- 迭代器报“vector iterators incompatible”错的几种可能
- 迭代器报“vector iterators incompatible”错的几种可能
- cocos2d-html5使用jsbinding显示广告
- JAVA中this用法小结
- 天津之行
- centos下apache反向代理设置
- linux环境下 ./startup.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录 解决办法
- c++ string iterators incompatible
- mysql数据库 触发器
- Android获取设备采用的时间制式(12小时制式或24小时制式)
- Android 通过拍照获取图片
- HTTPS的SSL双向认证
- Storm高级原语(四) — Trident API 综述
- idea maven编译出现 “不是语句” “缺少;” 等编译异常信息的解决方案
- HDU3182 - Hamburger Magi(状压DP)
- scanf输入格式