C ++ Streams不读空行

时间:2010-01-05 14:01:30

标签: c++ stream

我正在尝试编写一个函数,该函数从txt文件中读取单独的行并将它们存储在字符串数组中。除了读取空行时,该功能正常工作。例如:

功能

ifstream flinput( "somefile.txt" )
string line;

while( getline(flinput, line) ) {
  //Add line to array

所以问题是文本文件是这样的。

Line1 Some Text blar blar blar
\n
Line3 Some Text blar blar blar
\n
Line5 Some Text blar blar blar

阵列最终看起来像这样。

array[0] = "Line1 Some Text blar blar blar"
array[1] = "Line3 Some Text blar blar blar"
array[2] = "Line5 Some Text blar blar blar"

什么时候应该是这样的。

array[0] = "Line1 Some Text blar blar blar"
array[1] = ""
array[2] = "Line3 Some Text blar blar blar"
array[3] = ""
array[4] = "Line5 Some Text blar blar blar"

我做错了什么?

由于

3 个答案:

答案 0 :(得分:3)

来自getline文档...

  

如果找到分隔符,则将其提取并丢弃,即不存储分隔符,并且在其之后开始下一个输入操作。如果您不希望提取此字符,则可以使用member get。

因此,您的代码正在完全按照预期执行。如果要保存\ n。

,则必须使用文档建议手动解析Get

答案 1 :(得分:0)

您的代码适用于Linux系统上的gcc 4.3.2。我认为应该。

答案 2 :(得分:0)

使用迭代器here's例如:

会更简单