当前位置: 首页 > news >正文

<sstream>

ostringstream和ostream

ostringstreamostream是 C++ I/O 流体系中紧密相关但职责不同的两个概念。简单来说,ostream是一个基类(抽象概念),而ostringstream是基于内存的具体实现

  • std::ostringstream是 C++ 标准库中的安全类,它会自动管理内存,不会导致缓冲区溢出
  • 相反,应该避免使用C 风格的std::ostrstream(已废弃),而推荐使用std::ostringstream
  • std::ostream是一个基类,不能直接用于字符串流操作。
类名核心头文件常用替代/包含头文件说明
std::ostringstream<sstream>专门用于将数据格式化输出到std::string对象中。
std::ostream<ostream><iostream>输出流的基类。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 <sstream>

std::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"; vector<string> 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]
http://www.jsqmd.com/news/727523/

相关文章:

  • 仅限前500名R用户:Tidyverse 2.0自动化报告工具链私密安装包(含离线安装器+中文文档+企业级模板库)
  • Halcon实战:用edges_sub_pix和fit_rectangle2搞定金属冲孔边缘缺陷检测(附完整代码)
  • 戴尔笔记本的‘私有协议’破解记:深入拆解那颗关键的DS2501芯片与三线电源接口
  • 通过用量看板清晰掌握团队大模型API成本与消耗趋势
  • 异构信息网络高阶语义表示学习【附代码】
  • ARM64服务器上,如何用devmem2手动读写PCIe设备的配置空间?
  • 中兴R5300G4服务器运维日记:如何快速定位硬件信息与RAID配置(含dmidecode与arcconf实战)
  • 2026年|收藏必备!几款亲测有效降AI率工具:手把手教你论文降AI,查重率红变绿仅需几分钟 - 降AI实验室
  • 在OpenClaw项目中配置Taotoken作为其AI能力提供方
  • 观察Taotoken聚合API在不同网络环境下的响应稳定性
  • 量子计算误差抑制与缓解技术解析
  • Magnet2Torrent:5分钟学会磁力链接转种子文件的完整教程
  • 武汉初中学业水平测试适应性考试(四月调研测试)游记
  • 保姆级教程:用nvidia-smi命令行把GPU监控玩出花(从实时看板到自动日志)
  • 别再只盯着PSNR了!用Python和OpenCV手把手教你计算SSIM,评估图像修复效果更靠谱
  • PyCharm配置PySide6实战:从UI设计到代码转换的完整工作流(附常见错误排查)
  • 详解C++值多态中的传统多态与类型擦除
  • 大型语言模型分心攻击原理与防御实践
  • 2026年市政供水设备厂家权威推荐榜:超滤设备/软化水设备/超纯水设备/反渗透RO设备/EDI离子净化设备 - 品牌策略师
  • 基于大语言模型的婚恋情感助手:技术架构与伦理实践
  • ColFlor:轻量级视觉语言文档检索模型解析
  • 2026 ISO认证代办:企业高效合规与管理升级的优选路径 —— 上海极证信息技术有限公司专业赋能 - GrowthUME
  • 如何快速检测微信单向好友?WechatRealFriends终极指南
  • 3分钟学会用ACT插件自动跳过FF14副本动画,效率翻倍!
  • Boost电路软故障诊断与预测【附代码】
  • 在Node.js后端服务中集成Taotoken多模型API的实践指南
  • 2026年玩具包装新趋势:本地厂家直供热线揭秘 - GrowthUME
  • OpenSpeedy:免费开源游戏变速工具,让你的游戏体验飞起来!
  • 从MySQL到ClickHouse:手把手教你迁移亿级日志数据(含性能对比)
  • Vector授权狗驱动安装避坑指南:从驱动勾选到dll文件替换,一步都不能错