stringstream是c++中用于字符串与数值类型转换的工具,需包含<sstream>头文件,通过>>和<<操作符实现字符串转数字或数字转字符串,支持int、double等类型,遇到非法字符时停止转换。

在C++中,stringstream 是一个非常实用的工具,用于在字符串和数值类型(如 int、Float、double 等)之间进行转换。它定义在 <sstream> 头文件中,使用方式类似于 cin 和 cout,通过流操作符 << 和 >> 实现数据的输入输出。
包含头文件
使用 stringstream 前需要包含对应的头文件:
#include <sstream>
字符串转数字
将字符串转换为整数或浮点数时,可以借助 stringstream 的 >> 操作符。
示例:字符串转 int
立即学习“C++免费学习笔记(深入)”;
stringstream ss(“12345”);
int num;
ss >> num;
// num 现在是 12345
示例:字符串转 double
stringstream ss(“3.14159”);
double value;
ss >> value;
// value 现在是 3.14159
如果字符串中含有非法字符,转换会在遇到第一个无效字符时停止。例如:
stringstream ss(“123abc”);
int num;
ss >> num; // num = 123,后续 “abc” 被忽略
数字转字符串
将数字转换为字符串,使用
示例:int 转 string
int num = 456;
stringstream ss;
ss string str = ss.str();
// str 现在是 “456”
示例:double 转 string
double value = 2.718;
stringstream ss;
ss string str = ss.str();
// str 是 “2.718”
注意事项与技巧
每次使用同一个 stringstream 对象进行多次转换前,建议清空其状态和内容,避免残留数据影响结果。
- 使用 str(“”) 清空字符串内容
- 使用 clear() 重置错误状态(如 eof、fail 等标志)
stringstream ss;
ss string s1 = ss.str(); // “100”
ss.clear(); // 清除状态标志
ss.str(“”); // 清空内容
ss string s2 = ss.str(); // “200”
不清理可能导致后续读取失败或获取旧数据。
基本上就这些。stringstream 使用简单,适合基础类型和字符串之间的互转,尤其在处理输入解析或拼接数值时很实用。


