【问题标题】:How to get a specific word and line from a body of a text file in c++如何从 C++ 中的文本文件正文中获取特定的单词和行
【发布时间】: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 成功时才进入循环。

标签: c++ ifstream


【解决方案1】:

标准规定find 方法如果未找到则返回npos。你可以参考this

所以条件行应该是:

            if (tweet.find("Paris") != string::npos) {

【讨论】:

    【解决方案2】:

    正确用法如下图:

    if (tweet.find("Paris") != std::string::npos) {
    }
    

    请参考正确用法here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2014-02-22
      相关资源
      最近更新 更多