【问题标题】:to find a word from a text file and then also display the line number in which the word lies using C++从文本文件中查找一个单词,然后使用 C++ 显示该单词所在的行号
【发布时间】:2015-10-13 11:00:07
【问题描述】:

我绝对是编程的初学者。不,这也不是家庭作业。我正在尝试自己学习它。如标题本身所述,我想输入一个 .txt 文件并从文件中找出一个特定的单词。但这不完全是我想要的。我宁愿想要单词所在的行号,以便我可以使用此行号并在此特定行之后打印出 .txt 文件中的所有行。我在 youtube 上找到了这段代码,它向我展示了如何找到这个词。我对其进行了一些修改,现在它给了我搜索单词状态的行(不是行号)。我附上代码。

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;

string find_word(string file, string word)
{
  int offset;
  string line1;
  ifstream Myfile;
  Myfile.open(open);

  if (Myfile.is_open())
  {
    while (!Myfile.eof())
    {
      getline(Myfile, line1);
      if ((offset = line1.find(word,o)) != string::npos)
      {
        return line1;
      }
    }
    Myfile.close();
  }
  else
    cout << "couldn't open...." << endl;
}

int main ()
{
  string c = find_word("test.txt", "$COOR");
  cout << c;
  cin.get();
  return 0;
}

现在文本文件只包含 8 行,“$COOR”位于第 4 行。程序只给了我整行。但我想要行号,以便我可以打印出第 4 行之后的行。

稍后我想测试它是否具有多行的文件,即超过 50000000 左右。

【问题讨论】:

标签: c++ file-io ifstream


【解决方案1】:

逻辑思考。在您阅读之前,您不知道给定的行是否包含您要查找的单词。因此,您始终需要知道您已阅读的文本文件中的当前行号,因此如果该行包含该单词,则您将打印行号。

您需要另一个变量int,初始化为零,并在您的代码每次读取一行文本时递增。因此,当您的代码读取第一行文本时,它会递增到 1。然后,当代码读取下一行文本时,新变量会递增到 2,依此类推。因此,当您找到该单词时,您就知道在哪里可以找到行号。

您的代码已经有一个循环来读取每一行文本。您不认为现在需要增加行计数器的位置很明显吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多