【问题标题】:Why is my code not recoginising blank line C++为什么我的代码不能识别空行 C++
【发布时间】:2015-01-21 13:29:04
【问题描述】:

我看过这个例子,关于从文件流中提取字符的 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(...);

【问题讨论】:

  • 这不可能是你的代码:它不能编译。
  • 使用 getline 将行读取到字符串。如果在while循环中做的话,基本上可以检查字符串的大小,看是不是空行。要读取字符,您可以将字符串用作数组(如果您的字符串是 'line',则 line[2] 是第二个字符)。
  • @learningToCode:实际上,line[2] 是第三个字符,因为数组从索引零开始。
  • 是的,我的错。谢谢你。可以使用数组访问运算符访问字符串中的字符。所以,字符串 line,line[0] 是第一个字符。

标签: c++ get getline istream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2010-10-19
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多