这是我目前的读取文件代码:
void Dictionary::processFile() {
ifstream fin;
fin.open("article.txt");
if (fin.fail( )) {
cout << "Input file opening failed.\n";
exit(1);
}
string word;
while (!fin.eof()) {
fin >> word;
cout << word << endl;
}
cout << endl;
fin.close();
}
如何让我的代码忽略符号(“。';:!等)并且只输出/读取单词?此时它正在阅读文章中的每一个符号。例如”test。“,”他们, “
答案 0 :(得分:2)
如果您可以使用Boost.Iostrems,您可以为您的流编写自己的InputFilter。请参阅此处的详细信息http://www.boost.org/doc/libs/1_60_0/libs/iostreams/doc/tutorial/writing_filters.html
答案 1 :(得分:2)
像现在一样阅读“单词”,但在打印“单词”之前,请从字符串中过滤掉不需要的字符。
C ++有很多algorithmic functions可以帮助你解决这个问题。出于您的目的,您可以查看例如std::remove_if
并执行类似
static std::string const symbols = "\".';:!";
while (fin >> word)
{
word.erase(std::remove_if(word.begin(), word.end() [symbols&](char const& ch) {
return std::any_of(symbols.begin(), symbols.end(), [ch](char const& sym) {
return ch == sym;
});
});
if (!word.empty())
{
// Do something with the "word"
}
}