如何遍历文件中的一行

How to iterate over a line in a file?

本文关键字:一行 文件 遍历 何遍历      更新时间:2023-10-16

我有一个文件,其中包含以行组织并以空格分隔的整数。行数和长度都是未知的。

我目前正在逐行迭代文件,我正在尝试逐字符迭代每行,但我遇到了一些麻烦。我目前将每行的内容存储到一个字符串中,但我怀疑这不是最好的方式,我希望有人能给我指出正确的方向。

下面是我当前的代码,它只是打印文件中的每一行:

std::string filename = "values.txt";
std::ifstream file(filename.c_str());
std::string line;
while (std::getline(file, line))
{
    std::cout << line << std::endl;
}

我来自python,它可以很容易地实现这个,像这样:

for line in file:
    for char in line:
        print char

然而,不知道for循环的长度/行数让我很困惑,因为我是c++的新手。我还想把字符读成整型而不是字符串,但我也没能弄清楚。在c++中实现这个最正确的方法是什么?

非常感谢任何帮助。

你就快成功了;您可以使用格式化的流提取来读取整数,使用字符串流来表示每行:

#include <fstream>
#include <sstream>
#include <string>
// ...
for (std::string line; std::getline(infile, line); )
{
    std::istringstream iss(line);
    for (int n; iss >> n; )
    {
        std::cout << "Have number: " << n << "n";
    }
    std::cout << "End of linen";
}

可以通过检查整个字符串流是否已被消耗来添加错误检查。