用于在文件中写入的Stringstream或ostringstream
stringstream or ostringstream for writing in file?
要将数据从ostringstream
写入ofstream
,我必须这样写:
std::ostringstream ss;
myFile<<ss.str();
另一方面,如果我使用stringstream
,我可以直接访问缓冲区:
std::stringstream ss;
myFile<<ss.rdbuf();
问题是ostringstream::str()
复制了字符串,这有点不好,因为在我的程序中有非常大的字符串,所以stringstream
应该更好,因为我可以直接访问缓冲区进行读取。这里的人说如果我们只处理输出操作,我们应该使用ostringstream
而不是stringstream
。我不能简单地使用字符串,因为我要插入各种类型的数据。所以有人能给我一些建议,告诉我如何处理这个问题吗?
这里的人说如果我们只处理输出操作,我们应该使用ostringstream而不是stringstream
使用更具体的ostringstream
的主要原因是使您的意图明确,避免错误。在这种情况下,需要stringstream
来防止复制可能较大的字符串,因此请小心使用它。
ostringstream
用于数据进入流而永远不出来的情况。(当然,您实际需要的std::string
对象除外。)
stringstream
用于同时发生读和写的情况。<< rdbuf()
是一种从流中读取的方式,所以stringstream
是完全合适的。
相关文章:
- "ostream &os"有什么用?
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 使用 "stringstream " 将字符串转换为整数
- std::stringstream 返回字符 *
- 在 c++ 中检查 Windows OS 服务器版本
- OS X: ld: 找不到 -lstdc++ 的库
- Python os.system() 返回错误值
- Mac os x app bundle 在下载并运行时崩溃,但在终端或更改 Info.plist 时运行良好
- const 如何防止写入特定内存 [Clang, Mac OS]
- std::stringstream::flush() 应该做什么吗?
- 旧C++代码中的目录查找导致 OS X Catalina 10.15 中的目录错误
- 如何在 Mac OS 上安装 boost-mpi 及其对 clang 的依赖关系?
- 静态 std::stringstream 的叮当整警告
- 在 Mac OS 中将 QT 与 CMAKE 集成
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib