I/O类

iostream 标准输入输出

fstream 文件输入输出

sstream string输入输出


wchar_t 宽字符类型,对应的有wistream和wostream流中的wcin,wcout等


流的条件状态

通过s.bad(),s.fail()等可以查询相关状态,返回true表示相应标志位被置1了

通过cin.clear(),cin.setstate(flags)可以管理条件状态


刷新输出缓冲

cout << "bye" << flush;    //输出hi,不附带任何字符,刷新
cout << "bye" << ends;     //输出hi,附带一个空字符,刷新

程序崩溃或异常终止时不会刷新

关联的输入输出流会,使用任一种流时都会刷新

tie函数

cin.tie(); //返回关联的输出流指针cout

cin.tie(&cerr); //将cin与cerr关联起来

同理可将输出流与输入流关联起来


文件输入输出

基本类型

ifstream 读数据

ofstream 写数据

fstream 读写数据


fstream特有操作

fstrm(s),创建并打开文件名为s的文件,打开模式依赖于fstrm的类型

fstrm(s,mode),按指定模式mode打开

fstrm.open(),打开文件名为s的文件,打开模式依赖于fstrm的类型

fstrm.close()

fstrm.is_open(),返回bool值,指出fstrm是否成功打开且尚未关闭

可以将IO流作为对象传递到函数中使用


检测open是否成功

ifstream in1;
in1.open("test");
ifstream in2("test");
if(in1)
{
    /* ...... */
}


文件模式

in 以读方式打开

out 以写方式打开

app 追加

ate 打开后直接定位到文件末尾

trunc 截断文件,相当于重写

binary 二进制方式IO


string流

基本类型

istringstream,ostringstream,stringstream


基本操作

strm(s) 初始化strm,保存s的拷贝

strm.str() 返回strm保存的string

strm.str(s) 将s拷贝到strm中


使用sstream的方法类似,通常用于逐行处理文件(istringstream)或逐行打印前的操作(ostringstream)




本来在总结函数部分,结果临时要写个关于文件操作的脚本,想了想不如总结一下,用C++写更划得来。