IO对象无拷贝和赋值,因此只能把IO类的引用作为形参或返回值类型。又因为读写IO对象会改变其状态,因此传递和返回的引用不能是const的。
流的条件状态
系统级错误:badbit
可恢复错误:failbit
到达文件结束:eofbit 当eofbit被置位的时候,failbit也会被置位
流未发生错误:goodbit
流的状态检测
流可能处于错误状态,一旦发生错误,其上后续的IO操作都会失败。因此,代码通常应该在使用一个流之前检查它是否处于良好状态。简单的办法是把它当成一个条件使用
char word;
while(cin>>word){}
由于badbit被置位时IO对象的fail函数会返回true,而eofbit被置位的时候,failbit也会被置位。所以,无论badbit,failbit和eofbit
中的哪一种被置位,IO对象的fail函数会返回true。当这三种都没被置位时,IO对象的good函数才会返回true。
因此 ,用good和fail就能确定流的总体状态是有效还是无效。eof和bad能表示特定的错误。
刷新输出缓冲区
endl:输出对象和一个换行符,然后刷新缓冲区
flush:输出对象,然后刷新缓冲