我有一个文件,其中包含组织成行并用空格分隔的整数。行的数量和长度都是未知的。
我目前正在逐行遍历文件,我试图逐个字符地遍历每一行,但我遇到了一些麻烦。我目前正在将每行的内容存储到一个字符串中,但我怀疑这不是最好的方式,我希望有人能指出我正确的方向。
这是我当前的代码,它只是打印文件中的每一行:
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 ++中实现它的最正确的方法是什么?
非常感谢任何帮助。
答案 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";
}
可以通过检查整个字符串流是否已被使用来添加错误检查。