【STL】iostream 编程:构造输出流对象
📅 2026/7/2 18:16:37
👁️ 阅读次数
📝 编程学习
本文介绍如何构造输出流对象。
目录
- 1 概述
- 2 文件输出流的构造方式
- 3 字符串输出流的构造方式
- 4 综述
1 概述
如果只使用系统预定义的 cout、cerr、clog,不需要手动构造输出流。
只有下面两种场景才需要调用构造函数:
- 构造文件输出流对象;
- 构造字符串输出流对象;
2 文件输出流的构造方式
有两种写法创建文件输出流 ofstream:
- 方式1:先调用默认构造创建对象,再调用 open 打开文件
ofstream myFile;// 栈上对象myFile.open("filename");ofstream*pmyFile=newofstream;// 堆上动态对象pmyFile->open("filename");
- 方式2:在构造函数中直接传入文件名与打开模式标志
ofstreammyFile("filename",ios_base::out);
3 字符串输出流的构造方式
使用 ostringstream 构造内存输出流:
usingnamespacestd;ostringstream myString;myString<<"this is a test"<<ends;string sp=myString.str();// 获取最终字符串cout<<sp<<endl;操作符 ends 会在字符串末尾追加字符串结束符 \0;
4 综述
- RALL 特性
- ofstream 对象析构时会自动关闭文件句柄,不需要手动调用 close()。
- 打开模式默认值
- 不写第二个参数时,ofstream 默认就是 ios_base::out(只写模式)。
- ends 与 endl 的区别
- ends:仅写入 \0,不刷新缓冲区;
- endl:写入换行并强制刷新缓冲区;
- 获取结果
- ostringstream.str() 会把缓冲区内容复制为一个 std::string。
编程学习
技术分享
实战经验