c – 当字符串的最后一个位置是标点符号时,程序停止解析
发布时间:2020-12-16 09:44:02 所属栏目:百科 来源:网络整理
导读:所以我试图从文件中读取所有单词,并在我这样做时摆脱标点符号.这是剥离标点符号的逻辑: 编辑:程序实际上完全停止运行,只是想清楚 ifstream file("text.txt");string str;string::iterator cur;for(filestr; !file.eof(); filestr){ for(cur = str.begin();
所以我试图从文件中读取所有单词,并在我这样做时摆脱标点符号.这是剥离标点符号的逻辑:
编辑:程序实际上完全停止运行,只是想清楚 ifstream file("text.txt"); string str; string::iterator cur; for(file>>str; !file.eof(); file>>str){ for(cur = str.begin(); cur != str.end(); cur++){ if (!(isalnum(*cur))){ cur = str.erase(cur); } } cout << str << endl; ... } 假设我有一个文本文件,内容如下: This is a program. It has trouble with (non alphanumeric chars) But it's my own and I love it... 当我cout和endl;我的字符串就在这个逻辑之后,我会得到的 This is a program It has trouble with non alphanumeric 这就是所有人. 谢谢. 解决方法
我看到迭代器的主要逻辑问题是,对于非字母数字字符,迭代器会增加两次:在擦除期间它移动到下一个符号然后从for循环中的cur增加它,因此它会在非字母数字后跳过每个符号.
所以可能有以下几点: string next; string::iterator cur; cur = next.begin() while(cur != next.end()){ if (!(isalnum(*cur))){ cur = next.erase(cur); } else { cur++; } } 这只是删除非字母数字字符.如果你需要标记你的输入,你将不得不实现更多,即记住,你是否在一个单词内(已经读过至少一个字母数字字符),并相应地采取行动. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Vuex使用dispatch和commit来调用mutations的区别详解
- Caused by: org.xml.sax.SAXParseException; lineNumber: 1
- FPGA_Embedded_9_13
- 解决ajax程序访问服务器返回的XML文件时, firebug出现: XML
- vue将毫秒数转化为正常日期格式的实例
- c# – 如何(正确)使用RSA和SHA256与.NET验证文件?
- c# – Word Automation – 其他应用程序或用户正在使用文件
- iphone – xcode此团队中已存在具有号码的设备.
- ruby-on-rails – ImageMagick多行文字和背景图片
- PostgreSql database dropping issue