我正在尝试创建一个程序,该程序将在给定目录txt文件中搜索某个字符串。一旦找到该字符串,程序将仅在txt文件中该行上的信息打印到屏幕上。我的代码能够检查字符串是否在文件中,但它不会打印仅包含其中的行,而是会打印除所需行之外的所有内容。
while(!inF.eof()){
getline(inF, hold);
if(hold.find(crnS)){
isFound = 1;
cout << hold << endl;
}
}
最佳答案
您的代码有两个问题:
std::string::find()
返回一个索引,而不是bool
。任何非零值都将被评估为true,因此索引0以外的任何返回值都将满足if
语句,如果std::string::npos
未找到匹配项,则包括find()
(-1)。这意味着您的代码将输出在每行的最开始以外的地方找到crnS
的每一行,以及根本没有找到crnS
的每一行。 使用此代替:
while (getline(inF, hold)) {
if (hold.find(crnS) != string::npos) {
isFound = 1;
cout << hold << endl;
}
}
关于c++ - 如何使用getline从txt文件打印正确的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57797802/