如何迭代文件中的一行?

时间:2016-09-24 22:54:49

标签: python c++

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

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

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

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 ++来说相当新。我也想把字符读作int而不是字符串,但我还没能把它想出来。在c ++中实现它的最正确的方法是什么?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你几乎就在那里;您可以使用格式化流提取来读取整数,使用字符串流来表示每一行:

#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 line\n";
}

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