1.只有支持复制的元素类型可以存储在vector或其他容器类型里.因此不存在存储流对象的vector或其他容器.
2.形参或返回类型也不能为流类型.如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用(非const).
002 IO标准库管理一系列条件状态成员,用来标记给定的IO对象是否处于可用状态,或者碰到了哪种特定的错误.
strm::iostate 机器相关的整型名,由各个iostream类定义,用于定义条件状态.
strm::badbit strm::iostate类型的值,用于指出被破坏的流.
strm::failbit strm::iostate类型的值,用于指出失败的IO操作.
strm::eofbit strm::iostate类型的值,用于指出流已经到达文件结束符.
s.eof() 如果设置了流s的eofbit值,则该函数返回true.
s.fail() 如果设置了流s的failbit值,则该函数返回true.
s.bad() 如果设置了流s的badbit值,则该函数返回true.
s.good() 如果流s处于有效状态,则该函数返回true.
s.clear() 将流s中的所有状态值都重设为有效状态.
s.clear(flag) 将流s中的某个指定条件状态设置为有效.flag的类型是strm::iostate.
s.setstate(flag) 给流s添加指定条件.flag的类型是strm::iostate.
s.rdstate() 返回流s的当前条件,返回值类型为strm::iostate.
举例. [Page]
int val;
cin >> val;
如果设备输入dog,则cin在尝试将输入的字符串读为int型数据失败后,生成一个错误状态,如果输入end-of-file(^d),也会进入错误状态.
检测流是否可用最简单的方法.
if(cin)
...
while(cin >> word)
...
003 每个IO类还定义了三个iostate类型的常量值,分别表示特定的位模式.这些常量值用于指出特定类型的IO条件,可与位操作一起使用.
badbit标志着系统级的故障,如无法恢复的读写错误.如果出现了这类错误,则该流通常就不能在继续使用了.
如果出现的是可恢复的错误,如在希望获得数值类型数据时输入了字符,此时则设置failbit标志.
eofbit实在遇到文件结束符时设置的,此时同时还设置了failbit.
流的状态由bad, fail, eof和good操作揭示.clear和setstate操作用于改变条件成员的状态.
在流出现了问题并补救后,用clear重置流的状态.
004 流状态的查询和控制.
// 08004.cpp
#include <iostream>
#include <stdexcept>
#include <string>
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
using std::flush;
using std::runtime_error;
using std::istream;
using std::string;
int main()...{
int ival = 0;