为什么我的代码不能重新确认空白行C++

为什么我的代码不能重新确认空白行C++,c++,get,getline,istream,C++,Get,Getline,Istream,我看了这个例子,关于从文件流中提取字符的istream get方法 基本上,我不希望我的程序读一个空行,但是它跳过了下一行,并给出了一个错误,它不能读取下一行-当它真的不应该阅读空白行。 无论如何,这是我遵循的教程,这是我的代码 is.get(c) if(c == '\0') { cout << "Blank line" << endl; } else { is.getline(...); } ignore whitespace... is.getline(...

我看了这个例子,关于从文件流中提取字符的istream get方法

基本上,我不希望我的程序读一个空行,但是它跳过了下一行,并给出了一个错误,它不能读取下一行-当它真的不应该阅读空白行。 无论如何,这是我遵循的教程,这是我的代码

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

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

您似乎有一种印象,认为空行以某种方式由空字符表示。事实并非如此。空行仅由行尾字符“\n”组成,可能最初是行尾序列,但在重要的系统上,行尾序列在非std::ios_base::binary模式下转换为行尾字符。要检测空行,您可以使用std::getline读取一行,或者可能使用std::istream::getline读取一行,并检查结果是否为空。

您似乎觉得空行以某种方式由空字符表示。事实并非如此。空行仅由行尾字符“\n”组成,可能最初是行尾序列,但在重要的系统上,行尾序列在非std::ios_base::binary模式下转换为行尾字符。要检测空行,您可以使用std::getline或可能使用std::istream::getline读取一行,并检查结果是否为空。

这不能是您的代码:它未编译。使用getline将行读取为字符串。如果在while循环中执行此操作,基本上可以检查字符串的大小以查看它是否为空行。要读取字符,可以将字符串用作数组,如果字符串是“行”,则第[2]行是第二个字符。@learningToCode:实际上,第[2]行是第三个字符,因为数组以索引零开始。是的,我的错。非常感谢。可以使用数组访问操作符访问字符串中的字符。所以,字符串行,[0]行是第一个字符。这不能是您的代码:它未编译。请使用getline将行读取为字符串。如果在while循环中执行此操作,基本上可以检查字符串的大小以查看它是否为空行。要读取字符,可以将字符串用作数组,如果字符串是“行”,则第[2]行是第二个字符。@learningToCode:实际上,第[2]行是第三个字符,因为数组以索引零开始。是的,我的错。非常感谢。可以使用数组访问操作符访问字符串中的字符。所以,字符串行,[0]行是第一个字符。