C++中cin.fail()和cin.bad()的区别是什么?哪个情况下用哪个?

如题所述

fail()中检测的是badbit和failbit这两个标志位,而bad()中检测的是badbit标志位。
badbit表示的是一种系统级的错误,比如流缓冲区完整性的缺失等,是无法恢复的。
failbit表示读取数据时失败,比如已经读到最末尾了等,它是可恢复的。
温馨提示:内容为网友见解,仅供参考
无其他回答

C++关于cin
一般是用cin.clear(),清理fail,eof,bad三种标志位,可以继续读取下一个内容。base_index.size() % 2,意思是奇数个就得再读取一个,如果是偶数个自然不会读取了。如果while(base_index.size() %2)里面cin>>出错了,岂不是这是一个死循环了。setstate函数大概如下所示。很疑惑楼主都没引用std就...

C++ cin相关函数
`cin`读取输入时可能遇到错误,这时`cin`会设置一个条件状态,包括`goodbit`(无错误)、`eofbit`(文件尾)、`failbit`(非致命的输入\/输出错误)和`badbit`(致命的输入\/输出错误,无法恢复)。可通过`s.eof()`、`s.fail()`、`s.bad()`和`s.good()`函数获取和判断条件状态。`s.clear(fla...

c++中cin问题
一些C++ I\/O流(精度,判断等)的行为可以通过操作不同的标志来修改。Constructors构造器bad()如果出现错误则返回trueclear()清除状态标志close()关闭一个流eof()如果处于文件结尾处则返回truefail()如果出现错误则返回truefill()控制默认填充字符flags()操作flagsflush()清空缓冲区gcount()返回读取的最后一...

C++中将输入条件作为循环判断条件的问题
badbit---试图进行非法操作,清除状态字后,流可能还可以使用。hardfail---致命错误,不可恢复的错误。对应于这些位,可用ios中定义的如下函数来检查流的当前状态位:int good()---如果正常,返回非0值 int bad()---如果badbit被设置,返回非0值 int eof()---如果eofbit被设置,返回非0值 int fail...

请教:c++中读文件,如何判断文件结尾
1、函数bad()如果badbit被设置,则反回true,2、函数eof()如果eofbit被设置则反回true,3、函数fail()如果badbit或failbit被设置则反回true。4、函数good()如果没有设置任何状态位则反回true。一旦设置了标志,该标志就会一直保持下去,除非对它重新进行了设置。5、函数clear()用于重设三个标志位,不...

c++中有个判断语句if(!cin)请问这里的!cin是啥意思呢?在下新手
输入流有四种状态,各值为1 时表示 good 下一操作可能成功 bad 流已破坏 eof 遇到结束 fail 下一操作将失败 对流使用!操作,返回 fail状态值 ,比如fail 为1 ,则 !cin 为1 ,表示下一操作将失败

C++中关于cin.clear()的问题
cin.clear()可以理解为清除的意思。当cin的状态被设置为错误状态了,调用cin.clear(istream::failbit)可以清除这个failbit(输入失败)状态复位到初始状态。 一般来说程序中多用if(!cin){cout<<"error";}这样类似的句式来检查输入流,用于保证输入的无误。

请问在c++中如何进行文件的输入输出以及读入?
bad()如果在读写过程中出错,返回 true 。例如:当我们要对一个不是打开为写状态的文件进行写入时,或者我们要写入的设备没有剩余空间的时候。 fail()除了与bad() 同样的情况下会返回 true 以外,加上格式错误时也返回true ,例如当想要读入一个整数,而获得了一个字母的时候。 eof()如果读文件到达文件末尾,返回...

c++中怎么自己实现输入和输出?
检查文件流的状态标志有助于诊断输入输出操作的异常情况,如成员函数 bad()、fail()、eof() 和 good()。状态标志可通过成员函数 clear() 重置。文件流定位管理内部位置,指示执行读写操作的位置。可通过成员函数 tellg() 和 tellp() 获取当前位置,使用 seekg() 和 seekp() 更改位置。这些函数使用...

c+++:string类型读不上去用的是默认值?
将会导致错误。4. 输入流状态错误:如果输入流的状态错误,例如输入流已到达文件结尾或输入错误的类型,将无法正确读取输入。您可以使用输入流的eof()、fail()和bad()函数来检查输入流的状态,并确定错误的类型。如果您仍然无法解决问题,请检查您的代码,并确保它符合C++语法和最佳实践。

相似回答