C++ 从文本文件中查找单词,然后使用C+显示单词所在的行号+;

C++ 从文本文件中查找单词,然后使用C+显示单词所在的行号+;,c++,file-io,ifstream,C++,File Io,Ifstream,我绝对是编程的初学者。不,这也不是家庭作业。我正在努力自学。正如titel本身所述,我想输入一个.txt文件,并从该文件中找出一个特定的单词。但这并不是我想要的。我更想要单词所在的行号,这样我就可以使用这个行号并打印出.txt文件中这一行之后的所有行。我在youtube上找到了这个代码,它告诉我如何找到这个词。我对它做了一些修改,现在它给了我一行搜索词的状态(不是行号)。我正在附上密码 #include "stdafx.h" #include <iostream> #include

我绝对是编程的初学者。不,这也不是家庭作业。我正在努力自学。正如titel本身所述,我想输入一个.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;
}
#包括“stdafx.h”
#包括
#包括
#包括
#包括
使用名称空间std;
字符串查找单词(字符串文件,字符串单词)
{
整数偏移量;
字符串行1;
ifstreammyfile;
Myfile.open(open);
如果(Myfile.is_open())
{
而(!Myfile.eof())
{
getline(Myfile,第1行);
if((offset=line1.find(word,o))!=string::npos)
{
回流线1;
}
}
Myfile.close();
}
其他的

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

您需要另一个变量
int
,初始化为零,并在每次代码读取一行文本时递增。因此,当代码读取第一行文本时,它将递增为1。然后,当代码读取下一行文本时,新变量将递增为2,依此类推。因此,当您找到该单词时,您知道在何处使用l查找行号


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

如果你的代码看起来确实如此,你应该花一些时间将其正确缩进,以便更容易阅读。如果它看起来不是这样,请编辑问题以正确缩进(您可以选择一个代码块,然后按Ctrl-K或
{}
按钮缩进一个块)。还可以查看和--您应该检查
getline
未测试
eof
的结果。请缩进您的代码。使用
而(!file.eof())
是个坏主意,请查看原因: