gpt4 book ai didi

c++ - 如何使用 getline 从 txt 文件打印正确的行

转载 作者:行者123 更新时间:2023-11-30 04:44:25 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,该程序将在给定目录 txt 文件中搜索特定字符串。找到该字符串后,程序将仅在屏幕上打印 txt 文件中该行的信息。我的代码能够检查并查看字符串是否在文件中,但不是只打印它所在的行,而是打印除我想要的行之外的所有内容。

while(!inF.eof()){
getline(inF, hold);
if(hold.find(crnS)){
isFound = 1;
cout << hold << endl;
}
}

最佳答案

您的代码有两个问题:

  • 参见 Why is iostream::eof inside a loop condition (i.e. `while (!stream.eof())`) considered wrong?

  • std::string::find() 返回索引,而不是 bool。任何非零值都被评估为真,因此除索引 0 之外的任何返回值 都将满足您的 if 语句,包括 std::string::npos (-1) 如果 find() 没有找到匹配项。这意味着您的代码输出每一行,其中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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com