我绝对是编程的初学者。不,这不是一个功课。我试图自己学习它。正如标题本身所述,我想输入一个.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行和&#34; $ COOR&#34;位于第4行。该程序只给我整行。但我想要行号,这样我就可以打印出第4行之后的行。
我后来想测试一个有很多行的文件,即大于50000000左右。
答案 0 :(得分:4)
逻辑思考。在您阅读之前,您不知道给定的行是否包含您要查找的单词。因此,您始终需要知道您已阅读的文本文件中当前行的编号,因此如果该行包含该单词,则打印该行号。
您需要另一个变量int
,初始化为零,并在每次代码读取一行文本时递增。因此,当您的代码读取第一行文本时,它会增加到1.然后,当代码读取下一行文本时,新变量将增加到2,依此类推。因此,当您找到该单词时,您知道在哪里查找行号。
您的代码已经有一个循环来读取每行文本。你认为现在很明显你需要增加线路计数器吗?