从文本文件中查找一个单词,然后使用c++显示该单词所在的行号

to find a word from a text file and then also display the line number in which the word lies using C++

本文关键字:显示 c++ 单词所 然后 查找 文件 文本 单词 一个      更新时间:2023-10-16

我在编程方面绝对是个初学者。不,这也不是作业。我正在努力自学。正如标题本身所述,我想输入一个。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左右。

逻辑思考。你不知道给定的一行是否包含你要找的单词,直到你读它。因此,您总是需要知道您已阅读的文本文件中当前行的编号,因此,如果该行包含该单词,则打印行号。

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

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