【发布时间】:2019-01-31 04:13:50
【问题描述】:
运行这段代码时,当我只想要包含该单词的特定行时,将输出整个文件。例如寻找单词 paris 并显示所有行而不是特定行。
我已经尝试过get line、tweet,但这不起作用,我觉得这是问题的一部分,但我不确定。
void choice1() {
string tweet;
ifstream infile;
infile.open("sampleTweets.csv");
if (infile.good()) {
while (!infile.eof()) {
getline(infile,tweet);
if (tweet.find("Paris") != tweet.length()) {
cout << "Found Paris in the line" << tweet << endl;
}
}
}
}
希望它输出包含该单词的行而不是文件中的所有行,但目前它只是重复每一行的文本,就好像找到了单词一样。
【问题讨论】:
-
首选
while (getline(infile,tweet))而不是while (!infile.eof()){ getline(infile,tweet);Reasoning。 TL;DR 版本:1) 对 EOF 的测试仅捕获 EOF。阅读时很多事情都可能出错,你想检查几乎所有的事情。 2) 在读取之前测试正确性允许后续读取在未经检查的情况下失败。您需要做的是读取数据。检查是否已读取数据。使用数据。while (getline(...))读取并检查,只有在getline成功时才进入循环。