【发布时间】:2017-02-02 13:11:18
【问题描述】:
我有一个文件,其中包含按行组织并用空格分隔的整数。行数和行长都是未知的。
我目前正在逐行迭代文件,我正在尝试逐个字符地迭代每一行,但我遇到了一些麻烦。我目前正在将每一行的内容存储到一个字符串中,但我怀疑这不是最好的方法,我希望有人能指出我正确的方向。
这是我当前的代码,它只是打印文件中的每一行:
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++ 中实现这一点的最正确方法是什么?
非常感谢任何帮助。
【问题讨论】:
-
我不明白你的问题是什么?阅读带有
std::getline()的行,如您所见是完美的。 -
您可以在之前的帖子中使用this answer,该帖子将告诉您如何拆分从每一行获得的字符串,然后您可以对单个字符串进行操作(将它们转换为整数、双精度数、等等...)
-
你熟悉stringstream吗?
-
this answer 可能会让您非常接近。从那里,如果需要,您可以很容易地将数据行存储到向量集中。 stackoverflow 上有很多例子。