该博客用于记录自己在阅读过程中不懂的知识点,很少用到但比较重要的知识点以及模棱两可的知识点
IO库条件状态。
使用流之前应检查其状态
数据的读写会用到一个叫缓冲区的东西,当你打印一个字符串时,有可能会立即打印也有可能会写进缓冲区,随后再打印,缓冲区刷新(即数据真正的写入文件或者输出设备)的原因:
程序正常结束时,mian函数的return。
缓冲区满
endl,flush,ends
使用unitbuf设置流的操作不使用缓冲区,该流的所有操作都立即刷新缓冲区,使用方法:
cout << unitbuf; 取消的方法: cout << nounitbuf;
流之间存在关联关系,默认情况下,cin和cerr都关联到cout,执行cin和cerr时会刷新cout的缓冲区
程序崩溃并不会刷新缓冲区
使用tie关联输入输出流
文件模式:
in //读文件
out //写文件
app //每次写操作前定位到文件末尾
ate //打开文件后立即定位到文件末尾
trunc //截断文件(清空已存在的文件流)
binary //二进制方式进行IO
out模式打开文件会清空数据,避免的方法是加上app或者in模式
每次调用open打开文件时都会确定文件模式
如果遇到需要处理一行数据而恰好一行数据中包含多个字符串时,可以使用istringstream和ostringstream