为什么我的代码无法识别空白行C ++

时间:2014-11-23 21:35:20

标签: c++ get getline istream

我看了一下这个例子,在istream get方法中从文件流中提取字符。

基本上,我不希望我的程序读取空白行,但是它跳到下一行并发出错误,它无法读取下一行 - 当它真的不应该这样做时。读取空白行。

无论如何,这是我遵循的教程http://www.cplusplus.com/reference/istream/istream/get/,这是我的代码

is.get(c)
if(c == '\0')
{
  cout << "Blank line" << endl;
}
else
{
 is.getline(...);
}

ignore whitespace...
is.getline(...);

1 个答案:

答案 0 :(得分:6)

您似乎认为空行以某种方式由空字符表示。它不是。空行只包含行尾字符('\n',最初可能是行结束序列,但在重要的系统上,行结束序列被转换为非结束符号 - std::ios_base::binary模式)。要检测空行,您可以使用std::getline()或使用std::istream::getline()读取一行,并检查结果是否为空。