std::stringstream是C++中用于字符串流处理的类,支持数值与字符串转换、格式化解析等。

在C++中,std::stringstream 是一个非常实用的类,定义在
字符串流的基本功能
std::stringstream 结合了输入(std::istream)和输出(std::ostream)的能力,可以:
- 将数字转换为字符串(类似 std::to_string)
- 将字符串解析成数字(比 atoi 更安全)
- 按空格或自定义方式分割字符串
- 拼接多种类型的数据到一个字符串中
基本使用示例
下面是一个简单的例子,展示如何用 std::stringstream 进行数值与字符串的相互转换:
#include iostream>#include
#include
int main() {
std::stringstream ss;
// 数字转字符串
int num = 123;
ss std::string str = ss.str();
std::cout
// 清空流内容
ss.str("");
ss.clear(); // 清除状态标志
// 字符串转数字
ss int num2;
ss >> num2;
std::cout
return 0;
}
输出结果:
立即学习“C++免费学习笔记(深入)”;
字符串: 123数字: 456
解析带空格的字符串(如拆分单词)
利用字符串流可以轻松按空格分割字符串,适合处理用户输入或配置项:
#include#include
#include
int main() {
std::string input = "apple banana cherry";
std::stringstream ss(input);
std::string word;
while (ss >> word) {
std::cout }
return 0;
}
输出:
applebanana
cherry
拼接不同类型的数据
你可以用 stringstream 把整数、浮点数、字符串等混合拼接成一个字符串:
#include#include
#include
int main() {
std::stringstream ss;
int age = 25;
double height = 1.78;
std::string name = "Tom";
ss std::cout
return 0;
}
输出:
Tom is 25 years old and 1.78m tall.基本上就这些。std::stringstream 虽然性能不如直接使用 fmt 或 std::format(C++20),但在没有这些支持的环境中,它是处理字符串转换和解析的可靠工具。注意每次复用前调用 str("") 和 clear(),避免状态残留。不复杂但容易忽略。











