2011-10-14 113 views
1

我有一些输入文件看起来像这样:如何从文件中读取一行文本而不跳过空行?

asdfasfasfas.... 

asdfasdfasd.... 
asdfasdf.... 

asdfsadf... 

我希望能够读取由线整条生产线线,中间没有跳过空白行。我怎样才能做到这一点?每一行中有没有空白,但如果我只是简单的阅读和过程:

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

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

回答

2

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

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

这会逐行读取每一行,直到文件结束,并将它们显示在屏幕上。

默认情况下,std::istream::operator>>确实是格式化输入,其中(除其他外)表示所有空白符被删除。对于任何类型的空白(包括换行符),您需要未格式化的输入get,read,getline和其他几个。

0

您也可以逐个字符地读取字符,直到行尾并将其存储在一个数组中,然后将文件指针移动到下一行,依此类推。

相关问题