标准I/O库
---I/O对象不能复制或者赋值。形参和返回对象也不能为流类型。
---I/O标准库有一系列条件状态,例如s.eof()判断是否设置了eofbit值,s.good()判断是否处于有效状态。流必须处于无错误状态,才能用于输入输出。最常见的一种验证方法是while(cin>>word){ do something }
---setvbuf可以设置缓冲区模式,缓冲区的刷新:cout<<"hello"; sleep(2000);这种情况hello会等2秒后才会打印,而如果使用flush、endl、ends等进行缓冲区的刷新,则能够直接打印,例如cout<<"hello"<<flush;
这种刷新每输出一段就需要刷新:cout<<"hello"<<flush<<"world"<<flush;为了简单可以使用unitbuf操作符和nounitbuf操作符:cout<<unitbuf<<"hello"<<"world"<<nounitbuf;
---文件流对象:ifstream、ofstream、fstream。fstream file;file.open("filename1")。这就实现了file和filename1这个文件的绑定,想要重新与另一个文件绑定需要使用file.close();然后file.open("filename2"),另外file.clear()可以清除上次对文件读取的状态。
---文件模式:两种模式之间可以组合。
in:打开文件时做读操作;
out:打开文件时做写操作;
app:在每次写之前找到文件尾;
ate:打开文件后立即将文件定位在文件尾;(与ios::app存在区别)
trunc:打开文件时清空已存在的文件流;
binary:以二进制模式进行IO操作;(默认时采用的是 文本文件模式)