c – 当字符串的最后一个位置是标点符号时,程序停止解析

c – 当字符串的最后一个位置是标点符号时,程序停止解析,第1张

概述所以我试图从文件中读取所有单词,并在我这样做时摆脱标点符号.这是剥离标点符号的逻辑: 编辑:程序实际上完全停止运行,只是想清楚 ifstream file("text.txt");string str;string::iterator cur;for(file>>str; !file.eof(); file>>str){ for(cur = str 所以我试图从文件中读取所有单词,并在我这样做时摆脱标点符号.这是剥离标点符号的逻辑:

编辑:程序实际上完全停止运行,只是想清楚

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;我的字符串就在这个逻辑之后,我会得到的

ThisisaprogramIthastroublewithnonAlphanumeric

这就是所有人.
我的迭代器逻辑有问题吗?
我怎么能解决这个问题?

谢谢.

解决方法 我看到迭代器的主要逻辑问题是,对于非字母数字字符,迭代器会增加两次:在擦除期间它移动到下一个符号然后从for循环中的cur增加它,因此它会在非字母数字后跳过每个符号.

所以可能有以下几点:

string              next;string::iterator    cur;cur = next.begin()while(cur != next.end()){    if (!(isalnum(*cur))){        cur = next.erase(cur);    } else {        cur++;    }}

这只是删除非字母数字字符.如果你需要标记你的输入,你将不得不实现更多,即记住,你是否在一个单词内(已经读过至少一个字母数字字符),并相应地采取行动.

总结

以上是内存溢出为你收集整理的c – 当字符串的最后一个位置是标点符号时,程序停止解析全部内容,希望文章能够帮你解决c – 当字符串的最后一个位置是标点符号时,程序停止解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1214970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存