1、IO类
头文件iostream
类型istream,wistream从流读取数据
类型ostream,wostream向流写入数据
类型iostream,wiostream读写数据
头文件fstream
类型ifstream,wiftream从文件读取数据
类型oftream,woftream向文件中写入数据
类型fstream,wfstream读写数据
头文件sstream
类型istringstream,wistringstream从string中读取数据
类型ostringstream,wostringstream向string中写入数据
类型stringstream,wstringstream读写数据
(继承,iftream,istingstream都继承与istream,IO对象无拷贝或者赋值)
2、条件状态
IO库中定义了iostate类型,表示流的状态。其中badbit流已经崩溃,failbit表示操作失败,eofbit表示流到达了文件结束,googbit表示流没有错误。定义了四个函数返回流的状态。bad(),fail(),eof(),good(),good默认为0。
如果遇到系统级错误,不可读写后,流的badbit置位。如果读取到一个错误的字符failbit置位,如果文件结束eofbit,failbit都会置位。如果badbit,eofbit,failbit中有一个置位的话检测流的条件会返回0。
3、输出缓冲区
每个输出流都管理一个输出缓冲区,来保护程度读写数据。将多个输出操作合并成一个。
将缓冲区刷新:程序结束,缓冲区满,关联输入和输出中需要输入时,endl = 刷新+换行,flush=刷新,ends=空格+刷新。
unibuf操作符,之后的输出都立即刷新,知道nounibuf。
4、关联输入输出
tie:cin.tie(&cout)当cin时,会刷新cout。(c++默认cin与cout关联)
5、文件输入输出
ifstream fcin;//定义一个文件输入流
ifstream fcin(s);//打开文件s
ifstream fcin(s,mod);//以mod文件模式打开s
fcin.open(s);//fcin流打开文件s
fcin.close();//fcin关闭文件fstream
对于一个已经打开的文件流调用open会失败,failbit会置位,所以当要开打新文件是,要先关闭之前已经关联的文件。
文件模式:in以读的方式打开
out以写的方式打开(仅设out会清空文件)
app每次写操作都写到文件末尾
ate打开文件后直接到文件末尾
trunc截断文件
binary以二进制的方式打开
ifstream默认以in模式打开,ofstream以out打开,fstream以in和out打开。
6、string流
scin.str(s)将string s拷贝到scin中返回void
scin.str()将返回scin中的字符串