如何在不跳过空行的情况下从文件中读取一行文本?

时间:2011-10-14 16:52:30

标签: c++ file stream

我有一些看起来像这样的输入文件:

asdfasfasfas....

asdfasdfasd....
asdfasdf....

asdfsadf...

我希望能够逐行读取整行,而不会跳过它们之间的空白行。我怎样才能做到这一点?每行中都没有空格,但如果我只是读入并处理为:

 std::string line;
 file >> line;
 Foo(line);

然后它跳过第二行并直接跳到第二行。我不希望这种情况发生。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您可以使用getline逐行阅读,而不是operator>>将跳过这些空格。

答案 1 :(得分:1)

std::string line;
while (std::getline(std::cin, line)) {
    std::cout << line << '\n';
}

每次读取每一行,直到文件结尾,并在屏幕上显示。

默认情况下,std::istream::operator>>执行格式化输入,其中(除其他外)表示删除所有空格。对于任何类型的空白(包括换行符),您需要无格式输入getreadgetline以及其他几个。

答案 2 :(得分:0)

你也可以逐字逐句地阅读直到行的结尾并将其存储在数组中,然后将文件指针移动到下一行,依此类推......