C++流类库 字符串流
在 C 开发中我们经常需要在字符串与其他数据类型之间相互转换或是拼接多种类型数据。C 流类库提供的字符串流String Stream就是专门解决这类问题的强大工具。字符串流可以将内存中的字符串当作 “输入 / 输出流” 来操作完美实现类型安全的格式转换、字符串拼接、数据解析比手动处理字符数组更简洁、更安全。本文将从字符串流概述、核心类、常用操作、实战场景四个维度带你掌握字符串流的全部用法。一、字符串流概述1. 什么是字符串流字符串流是流类库中操作内存字符串的流类定义在sstream头文件中。不操作文件只操作内存里的字符串用法和cin、cout完全一致学习成本极低用于字符串拼接、类型转换、数据解析2. 字符串流三大核心类继承标准输入输出流功能分工明确表格类名继承自功能ostringstreamostream输出字符串流向字符串写入数据istringstreamistream输入字符串流从字符串读取数据stringstreamiostream输入输出字符串流可读可写最常用二、字符串流基本用法1. 头文件cpp#include sstream // 字符串流必备 #include string #include iostream using namespace std;2. 基础操作流程创建字符串流对象使用写入数据像cout一样使用读取数据像cin一样用.str()获取 / 设置字符串内容三、最常用stringstream 用法stringstream支持同时读写是开发中最常用的字符串流。1. 写入数据 stringstream ss; ss 姓名 张三 , 年龄 20 , 身高 175.5;2. 获取字符串 .str ()string result ss.str(); // 把流里的内容转成 string cout result endl;输出姓名张三, 年龄20, 身高175.53. 读取数据 可以从字符串中自动解析出不同类型的数据stringstream ss(100 3.14 hello); int a; double b; string c; ss a b c; // 自动拆分并转换类型 cout a b c endl;输出100 3.14 hello四、字符串流三大实战用途1. 任意类型拼接字符串替代 sprintf传统 C 语言拼接复杂字符串很麻烦字符串流一行搞定int id 10; string name 苹果; double price 5.8; stringstream ss; ss 商品编号 id , 名称 name , 价格 price; string res ss.str();2. 字符串转数字安全、自动无需atoi、atof类型安全不会出错string str 12345; stringstream ss(str); // 用字符串初始化流 int num; ss num; // 直接转成 int3. 数字转字符串替代 itoadouble pi 3.14159; stringstream ss; ss pi; string str ss.str(); // 数字 → 字符串五、清空与重置字符串流多次使用同一个字符串流时需要清空内容 清空状态ss.str(); // 清空字符串内容 ss.clear(); // 清空流错误状态示例stringstream ss; ss 100; ss.str(); // 清空 ss 200; // 重新使用六、综合实战示例示例 1字符串拆分与类型解析把一行文本自动解析成多种类型#include sstream #include iostream using namespace std; int main() { string data Tom 18 95.5; stringstream ss(data); string name; int age; double score; ss name age score; cout 姓名 name endl; cout 年龄 age endl; cout 分数 score endl; return 0; }示例 2多类型数据拼接stringstream ss; ss ID: 1001 , 状态: true , 精度: 0.001; cout ss.str() endl;七、字符串流常用成员函数表格函数作用ss 数据向流写入数据ss 变量从流读取数据到变量ss.str()获取流中的字符串ss.str(内容)设置字符串内容ss.clear()清空流状态ss.empty()判断是否为空八、字符串流 vs 传统方法表格方式优点缺点字符串流类型安全、代码简洁、支持任意类型、无缓冲区溢出略微多占一点内存sprintf / sscanf速度快类型不安全、容易溢出、代码复杂九、总结字符串流是 C 流类库中处理字符串最方便的工具。核心要点头文件sstream三大类istringstream、ostringstream、stringstream最常用stringstream可读可写核心操作写入读取.str()获取字符串三大用途字符串拼接、类型转换、数据解析清空str()clear()掌握字符串流你就能轻松处理所有字符串与数字互转、复杂字符串拼接问题。总结字符串流操作内存字符串用法与标准 I/O 一致stringstream功能最全面支持读写可轻松实现数字转字符串、字符串转数字、多类型拼接、数据拆分比 C 语言函数更安全、简洁、易维护清空流用str()和clear()