查找包含指定单词的行(从文件中)

find lines (from a file) that contain a specified word

本文关键字:文件 包含指 单词 查找      更新时间:2023-10-16

我不知道如何列出包含指定单词的行。我得到了一个包含文本行的.txt文件。

到目前为止,我已经走到了这一步,但我的代码正在输出行数。目前,这是我脑海中有意义的解决方案:

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

void searchFile(istream& file, string& word) {
string line;
int lineCount = 0;
while(getline(file, line)) {
lineCount++;
if (line.find(word)) {
cout << lineCount;
}
}
}
int main() {
ifstream infile("words.txt");
string word = "test";
searchFile(infile, word);
} 

但是,这段代码根本无法获得我期望的结果。 输出应该只是简单地说明哪些行上有指定的单词。

因此,从评论中总结解决方案。它只是关于std::stringfind成员函数。它不返回任何与布尔值兼容的内容,如果找到,它要么返回索引,要么返回std::string::npos如果未找到,这是一个特殊的常量。

所以用传统方式调用它是错误的if (line.find(word)),但相反,应该这样检查:

if (line.find(word) != std::string::npos) {
std::cout << "Found the string at line: " << lineCount << "n";
} else {
// String not found (of course this else block could be omitted)
}