本文共 880 字,大约阅读时间需要 2 分钟。
1. 如果函数有基类类型的引用形参,可以给函数传递其派生类型的对象。如,一个函数有istream&形参,可以传递ifstream或者istringstream对象。
2. 只有支持复制的元素类型可以存储在vector或者其他容器类型中。流对象不能复制,所以不能。
3. 形参或返回类型也不能为流类型,可以传递或返回指向该对象的指针或者引用。
4. 除了endl,flush可用于刷新流,但不在输出中添加任何字符;ends也可用于刷新流,在输出中插入空字符null。
如果要刷新所有输出,用unitbuf操作符,在每次执行完写操作后都刷新流。如果要取消unitbuf的效果,试用nounitbuf操作符。
cout<< unitbuf <<"aaa" <<"bbb"<< nounitbuf;5. 如果程序崩溃,啧不会刷新缓冲区。如果想要通过输出来找到错误,最好在每次输出后刷新缓冲区。
6. 由于历史原因,IO标准库使用C风格字符串。
string input_file;ifstream infile(input_file.c_str());7. 关闭流并不能改变流对象的内部状态。如果最后的读写操作失败了,对象的状态将保持为错误状态,即使使用close()函数也不能恢复状态。所以需要调用clear()函数重新恢复流的状态。
8. 打开模式:
app: 每次写之前,找到文件尾。
ate: 打开文件后,定位到文件尾。
trunc: 打开文件时,清空文件内容。
几个组合方法:out | app, in |out等等
9. sstream输入和输出操作可自动把算数类型转化为相应的string表示形式,反之也可以。
int num1=100,num2=200,num3,num4;ostringstream oss;oss<<"num1: "<<<"\n"<<"num2: "<< num2< >temp>>num3>>temp>>num4;cout< <<"\t"< <
转载地址:http://egfdi.baihongyu.com/