C++ Primer 8.1 IO类
- io对象无拷贝赋值
- 条件状态
- 管理缓存
- 练习题
io对象无拷贝赋值
ofstream out1,out2;
//以下操作全为错误
out1=out2;
ofstream print(out2);
out2=print(out1);
条件状态
流对象的rdstate成员返回一个iostate值,表示其状态(P279)
aotu old_state =cin.rdstate();//返回cin当前状态
cin.cleal();//清空cin状态
process_input(cin);//使用cin
cin.setstate(old_state);//!!!把cin的状态置为之前的状态
管理缓存
此时可以输出(缓冲区刷新),程序正常结束
os<<"hello world";
此时不可以,无限循环
os<<"hello world";
while(1);
此时用关联方式,也可以解决
char c;
cin>>c;
cout<<c;
cin>>c;//使用它刷新cout
while(1);
用unitbuf可以直接刷新,使用方法如下
cout<<unitbuf;//所有输出操作后都会直接刷新
tie函数关联
- 不带参数的tie,返回指向输出流的指针
- 带参数的tie,接受一个指向ostream的指针,将关联到ostream
ofstream ofs;
ofs.open("test.txt");
cin.tie(&ofs);//传入的是ofs的地址,将cin与ofs关联
//cin写入时,ofs自动刷新
练习题
先略过