我正在尝试使用string::find方法来确定.txt文件行中是否存在字符串“hello”(前后带有空格)。如果是这样,它应该打印出行号(位置不重要)。问题是,它找不到字符串。请帮忙。
int main() {
string key (" hello ");
ifstream myReadFile;
myReadFile.open("test.txt");
string s;
int lineCount = 1;
int found;
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
getline(myReadFile, s);
found = s.find(key);
if(found != string::npos) {
cout<<lineCount<<endl;
lineCount++;
}
}
}
myReadFile.close();
return 0;
}
最佳答案
您所拥有的似乎只是在计算其中包含该字符串的行数。您应该在循环的每次迭代中增加行号var,而不仅仅是在找到字符串时。
int main() {
std::string key (" hello ");
ifstream myReadFile;
myReadFile.open("test.txt");
if (myReadFile) {
std::string line;
int line_number = 0;
while (std::getline(myReadFile, line)) {
line_number++;
if (line.find(key) != std::string::npos)
std::cout << line_number << std::endl;
}
} else {
std::cout << "Error opening file\n";
}
}