io都是通过一些类实现的。这些类包括iostream, istream, ostream, ifstream, ofstream,fstream, istringstream, ostringstream, stringstream. 其中ifstream和istringstream继承自istream,ofstream和ostringstream 继承自ostream.
io对象不能拷贝和赋值。
io对象都实现了操作符<<和>>进行输入和输出。
io操作有一些标志位来表示io操作是否成功。
对于ofstream来说,默认的打开文件的方式会清除文件原先的内容,如果不想清除原来的内容,应该一app的方式打开,即:ofstream out("file1",ofstream:app)
stringstream 对象是对内存中的string对象进行io操作。
输出缓冲区的刷新(数据被写入到输出设备):
1、程序结束,作为main函数的return操作的一部分;
2、缓冲区满了
3、endl等操作符显示刷新
4、可以设置留状态unitbf,每次输入均刷新缓冲区
5、一个输出流可能被关联到另一个流。在这种情况下,当读写被关联的流时,关联到的流的缓冲区会被刷新。例如,默认情况下,cin和cerr都关联到cout。因此,读cin或者写cerr都会导致cout的缓冲区被刷新
endl:刷新缓冲区并换行;
flush:刷新缓冲区,不输出任何额外的字符;
ends:向缓冲去插入一个空字符,然后刷新缓冲区。
文件模式:
in:以读方式打开;
out:以写方式打开;
app:每次操作前定位到文件末尾;
trunc:截断文件;
binary:以二进制方式进行IO。