在 c++ 中从 txt 文件中读取特定行

Reading a specif line from a txt file in c++

本文关键字:读取 文件 c++ 中从 txt      更新时间:2023-10-16

所以,我找到了我想读取的文件的特定行,但我得到的不起作用:

    string str;
int target = 0;
ifstream record;
record.open("Record.txt");
target = std::count(std::istreambuf_iterator<char>(record), std::istreambuf_iterator<char>(), 'n') - 8;
cout << target << endl;
for(int lineNum = 0; lineNum <= target; lineNum++)
{
    getline(record, str);
    if(lineNum == target)
    {
        cout <<"the id: "<< str << endl;
    }
}

在上面,我使用 std::count 来计算文件的行数。 我知道我总是想从底部阅读第 eigth 行,所以我将目标设定为该行。 接下来,我循环遍历每行到目标时间,并检查我是否在目标行。 如果是这样,那就去排队。

但是,它没有给我任何东西。 对于 22 行的文件,我得到以下输出:

14
the id:

有人可以指出我做错了什么或给我一些提示吗? 谢谢!

record流将在std::count()调用后eof(),但代码从不检查std::getline()的返回值,因此不知道它正在失败:始终检查读取操作的返回值。这意味着永远不会填充str,因此在"thid id: "消息之后不会打印任何内容。

您需要重置流或重新打开它。