C/C++中只在行的开头识别EOF

在C++中,当输入遇到EOF(文件结束符)时,eofbit通常会被置位。然而,如果EOF出现在输入数据的中间,可能不会立即识别为文件结束。只有第一个EOF被处理为文件结束,后续的EOF可能导致读取空字符。这个问题涉及到对标准输入流std::cin的处理和EOF的特殊性质。
摘要由CSDN通过智能技术生成

学习IO库IO类条件状态时发现的问题,EOF在开头时eofbit正常置位:

#include <iostream>
int main(int argc, char *argv[])
{
    int a;
    std::cin >> a >> a;
    std::cout << std::cin.eof() << std::endl;
    return 0;
}

输入CTRL+Z 1,回车
在这里插入图片描述
EOF在输入字符后面时,不能识别为文件结束,输入1 CTRL+Z:
在这里插入图片描述
查看EOF的定义发现,EOF是一个int类型的常量,值为-1
在这里插入图片描述
后续经测试发现,只有第一个EOF被识别为文件结束,后面的EOF都读取为空字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值