C++字符串流读写与格式化方法
std::stringstream用于字符串与数据类型转换,支持写入拼接、格式化解析、清空重用及格式控制,适用于配置解析与日志拼接等场景。
std::stringstream用于字符串与数据类型转换,支持写入拼接、格式化解析、清空重用及格式控制,适用于配置解析与日志拼接等场景。

在C++中,std::stringstream 是一个非常实用的工具,用于在字符串和各种数据类型之间进行转换。它属于
1. 字符串流的基本构造与写入
创建一个 stringstream 对象后,可以像使用 cout 一样用 << 操作符向其中写入数据。
常见写入方式:
- 支持整数、浮点数、字符串等基本类型的拼接
- 可多次写入,内容会追加到内部缓冲区
#include#include #include std::stringstream ss; ss << "年龄:" << 25 << ", 身高:" << 175.5; std::cout << ss.str(); // 输出:年龄:25, 身高:175.5
2. 读取字符串流中的数据
使用 >> 操作符可以从 stringstream 中按字段提取数据,类似 cin 的行为。
适用于解析格式化的字符串,比如从一行文本中提取多个值。
std::string input = "张三 20 85.5"; std::stringstream ss(input); std::string name; int age; double score; ss >> name >> age >> score; // 成功提取:name="张三", age=20, score=85.5
如果输入格式不匹配,提取会失败,可通过检查流状态判断。
3. 清空与重用 stringstream
stringstream 内部有缓冲区和状态标志,重复使用前需要清空内容和状态。
常见清空方法:
- ss.str(std::string()); —— 清空内容
- ss.clear(); —— 重置错误状态(如 eof、fail)
ss.str(""); // 设置为空字符串
ss.clear(); // 清除状态标志
// 此时可重新写入
4. 格式化控制输出
stringstream 支持 iomanip 中的格式控制,可用于数字格式化。
例如设置精度、进制、填充等。
#includestd::stringstream ss; ss << std::fixed << std::setprecision(2) << 3.14159; // 结果:"3.14" ss << " 0x" << std::hex << 255; // 追加后为:"3.14 0xff"
基本上就这些。stringstream 在处理配置解析、日志拼接、数值转字符串等场景中非常方便,掌握好读写和清空方式就能避免常见问题。不复杂但容易忽略状态管理。
AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。
AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。
AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。
AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。
AlwaysUp是一款面向Windows的系统服务注册与程序托管工具,可让普通应用、脚本及批处理在无人登录时随系统启动,并通过状态检测、异常重启、资源监控和邮件通知保障关键任务持续运行。














