<sstream>
ostringstream和ostreamostringstream和ostream是 C I/O 流体系中紧密相关但职责不同的两个概念。简单来说ostream是一个基类抽象概念而ostringstream是基于内存的具体实现。std::ostringstream是 C 标准库中的安全类它会自动管理内存不会导致缓冲区溢出。相反应该避免使用C 风格的std::ostrstream已废弃而推荐使用std::ostringstream。std::ostream是一个基类不能直接用于字符串流操作。类名核心头文件常用替代/包含头文件说明std::ostringstreamsstream无专门用于将数据格式化输出到std::string对象中。std::ostreamostreamiostream输出流的基类。std::cout就是std::ostream的一个实例。#include sstream // 必须包含这个才能用 ostringstream #include iostream // 包含这个通常就有了 ostream同时也为了使用 cout int main() { // 使用 ostringstream std::ostringstream oss; oss Hello ; oss World; std::string result oss.str(); std::cout result std::endl; // 输出: Hello World return 0; }字符串分割使用 stringstream适合空格、制表符等空白字符分割#include sstreamstd::stringstream 的 operator 默认以任意空白字符包括空格、\t、\n、\r、\f、\v作为分隔符。 它会自动跳过多余的空白包括开头、结尾和中间连续的空白非常适合解析由空白分隔的“单词”或“字段”。这种方法主要利用sstream头文件中的std::stringstream配合操作符。#include iostream #include string #include vector #include sstream // 必须包含的头文件 using namespace std; int main() { // 模拟一段包含多个空格、制表符的文本 string text C is\tvery\npowerful; vectorstring result; // 1. 将字符串放入流中 stringstream ss(text); string temp; // 2. 循环读取 // 操作符会自动以空白字符空格、Tab、换行为分隔符 // 并且会自动忽略连续的空白符 while (ss temp) { result.push_back(temp); } // 输出验证 for (const auto s : result) { cout [ s ] endl; } return 0; }[C] [is] [very] [powerful]