【发布时间】:2013-04-09 04:28:47
【问题描述】:
所以我试图从文件中读取所有单词,并在这样做时去掉标点符号。这是剥离标点符号的逻辑:
编辑:程序实际上完全停止运行,只是想弄清楚
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
这就是所有人。 我的迭代器逻辑有问题吗? 我该如何解决这个问题?
谢谢。
【问题讨论】:
-
我不小心点击了编辑最后一个人的评论,结果丢失了。我很抱歉。
-
他可能决定自己删除它,没关系
-
对于它的价值,我使用的是 gcc 4.6.3,不确定我是否可以访问正则表达式。 Eclipse 没有编译它。
-
换行符如何进入字符串?我在您的代码中没有看到它,由于
cur未定义,它也没有真正编译,您是否显示您的实际代码? -
据我了解,以及我如何使用它,
file>>string将传递空格或换行符之间的所有内容,无论它们相距多远。它对我有用。
标签: c++ string parsing iterator