C++的文件结尾EOF

文章介绍了在C++中如何判断文件结束,包括使用cin.fail()检测EOF,cin.get()返回的特殊字符值,以及cin.get()函数返回false的情况。强调了EOF在不同系统中的表现,以及在处理无符号char类型时可能出现的问题。建议将返回值转换为int类型以正确识别EOF。
摘要由CSDN通过智能技术生成

创作内容不易,学习的朋友麻烦关注下博主,后面学习不迷路。有不会的问题也可以论坛咨询博主,博主也会及时回复~~

计算机操作系统要以某种方式判断文件的开始和结束

字符标记文件结尾:在文件末尾放一个特殊的字符标记文件的结尾。在大多数UNIX和Linux系统中,在一行开始处Ctrl+D读取文件结尾信号。许多微信计算机系统都把一行开始处的Ctrl+Z标识为文件结尾信号

存储文件大小的信息:比如文件有3000字节,程序在读到3000字节是便达到文件的末尾。MS-DOS及其相关系统使用这种方法处理二进制文件,因为用这种方法可以在文件中存储所有的字符

目录

目录

1.cin.fail()函数识别EOF

2.cin.get()返回EOF

3.cin.get(char类型变量) 


1.cin.fail()函数识别EOF

而在C++,我们利用cin来检测EOF。如果检测到EOF后,cin将eofbit和failbit都设置为1.可以通过成员函数fial()来读取这两个位的情况。如果eofbit和failbit都设置为1,fail()函数将返回true,否则返回false

我的系统只能识别在开头的Ctrl+Z。

2.cin.get()返回EOF

cin.get()能够返回一个字符值,而EOF返回的一个特殊的字符值,它对应-1这个字符值。

如果你这里无法结束,其实这里是因为EOF表示的不是有效字符编码,因此可能不予char类型兼容。比如在有些系统中,char类型是没有符号的,因此char变量不可能为EOF值(-1)。比如我转换为unsigned char类型就无法识别EOF了,所以会报错。

针对这种情况,只需要将返回值赋给int变量(或者直接转换澄sigend char就好了)

转换成int需要注意一点,就是如果在打印的时候不进行强制转换成char就会打印成对应字符数字

这个使用可以选择强制类型转化

3.cin.get(char类型变量) 

达到文件尾时函数的返回false


我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小天才哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值