重学C++ (六) 标准IO库
2016-01-20 10:39
288 查看
1.IO类型在三个独立的头文件中定义:
iostream定义读写控制窗口的类型;
fstream定义读写已命名文件的类型;
sstream定义读写存储在内存中的string对象;
2.IO对象不可复制和赋值:
a.只有支持复制的元素类型可以存储在vector等容器中,所以流对象不能存储在容器中;
b.形参和返回类型不能为流类型,如果需要传递和返回IO对象,必须传递或返回指向该对象的指针或引用;
3.输出缓冲区管理
下面几种情况将导致缓冲区的内容被刷新:
a.程序正常结束(作为main返回工作的一部分,将情况所以输出缓冲区);
b.在缓冲区可能满了的时候;
c.用操纵符显示刷新缓冲区,如行结束符endl;
d.在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区;
e.可将输出流与输入流关联起来,这时,在读输入流时将刷新其关联的输出缓冲区;
**输出应多使用endl而非’\n’(没有刷新缓冲区的作用)
4.文件流对象
在尝试打开新文件之前,必须先关闭当前的文件流;
*如果要重用文件流读写多个文件,必须在读另一个文件之前调用clear清除该流的状态;
5.stringstream对象的使用
stringstream还提供了多种数据类型之间的自动格式化。
iostream定义读写控制窗口的类型;
fstream定义读写已命名文件的类型;
sstream定义读写存储在内存中的string对象;
2.IO对象不可复制和赋值:
a.只有支持复制的元素类型可以存储在vector等容器中,所以流对象不能存储在容器中;
b.形参和返回类型不能为流类型,如果需要传递和返回IO对象,必须传递或返回指向该对象的指针或引用;
3.输出缓冲区管理
下面几种情况将导致缓冲区的内容被刷新:
a.程序正常结束(作为main返回工作的一部分,将情况所以输出缓冲区);
b.在缓冲区可能满了的时候;
c.用操纵符显示刷新缓冲区,如行结束符endl;
d.在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区;
e.可将输出流与输入流关联起来,这时,在读输入流时将刷新其关联的输出缓冲区;
[code]cout << "hi!" <<flush; //刷新流,不添加数据 cout << "hi!" <<ends; //插入空字符null,刷新流 cout << "hi!" <<endl; //插入换行,刷新流
[code]//unitbuf在每次执行完写操作后都刷新流 //nounitbuf将流恢复为正常的刷新方式 cout << unitbuf << "first" << " second" << nounitbuf; //等价于 cout << "first" << flush << " second" << flush;
**输出应多使用endl而非’\n’(没有刷新缓冲区的作用)
4.文件流对象
[code]//构造输入输出流并绑定到ifile和ofile上 //IO标准库使用C风格字符串,所以如果是string对象,需要调用c_str成员 ifstream infile(ifile.c_str()); ofstream outfile(ofile.c_str());
在尝试打开新文件之前,必须先关闭当前的文件流;
*如果要重用文件流读写多个文件,必须在读另一个文件之前调用clear清除该流的状态;
5.stringstream对象的使用
[code]string line, word; while (getlin(cin, line)) //读取一行 { istringstream stream(line); //将读取的行与stream绑定 while (stream >> word) //读入每行中的单词 { //do something } }
stringstream还提供了多种数据类型之间的自动格式化。
相关文章推荐
- c语言中的static
- c++程序猿经典面试题
- c++中的243、251、250错误原因
- C++设计模式——单例模式
- C++之路进阶——可持续化线段树(Couriers)
- C++之路进阶——(可持续化线段树)
- 关于 C++ 框架、库和资源的一些汇总列表
- C++模板(二)
- C语言冒泡排序法心得
- VC++ 中使用内存映射文件处理大文件
- c++模板(一)
- Qt & C++变量类型装换
- 论“使用C++非内置全局变量的风险”
- 解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ...)
- thiscall仅仅应用于“C++”成员函数(this指针存放于CX寄存器,参数从右到左压)
- C++编译时函数名修饰约定规则(很具体),MFC提供的宏,extern "C"的作用
- C++中如何用cout实现输出的填充,宽度,对齐及其精度控制
- C++ 自定义日期类实现日期的加减算法
- C++ 实现mystring类型
- 有序数组的合并 c++模板实现