我有一些看起来像这样的输入文件:
asdfasfasfas....
asdfasdfasd....
asdfasdf....
asdfsadf...
我希望能够逐行读取整行,而不会跳过它们之间的空白行。我怎样才能做到这一点?每行中都没有空格,但如果我只是读入并处理为:
std::string line;
file >> line;
Foo(line);
然后它跳过第二行并直接跳到第二行。我不希望这种情况发生。我该如何解决这个问题?
答案 0 :(得分:2)
您可以使用getline
逐行阅读,而不是operator>>
将跳过这些空格。
答案 1 :(得分:1)
std::string line;
while (std::getline(std::cin, line)) {
std::cout << line << '\n';
}
每次读取每一行,直到文件结尾,并在屏幕上显示。
默认情况下,std::istream::operator>>
执行格式化输入,其中(除其他外)表示删除所有空格。对于任何类型的空白(包括换行符),您需要无格式输入。 get
,read
,getline
以及其他几个。
答案 2 :(得分:0)
你也可以逐字逐句地阅读直到行的结尾并将其存储在数组中,然后将文件指针移动到下一行,依此类推......