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

C++(流类:istream /ostream/istringstream /ostringstream)

这四个是 C++ 标准输入输出流的核心类,都属于 <iostream> 和 <sstream> 库,专门处理数据的输入 / 输出,区别只在于数据来源 / 去向不同。

1. 基础流类:istream / ostream

这两个是所有输入 / 输出流的基类,我们天天用的 cin / cout 就是它们的实例:

istream:输入流,负责读取数据

ostream:输出流,负责写入数据

class Int { int value; public: Int(int x=0):value(x){} void SetValue(int x) { value = x; } int GetValue()const { return value; } void Print()const { cout << "value:" << value << endl; } int& Value(){ return value; } const int& Value() const{ return value; } }; std::istream & operator>>(std::istream& in, Int& it) {//写入没有常性 in >> it.Value(); return in; } std::ostream& operator<<(std::ostream& out,const Int& it) {//读取有常性 out << it.Value(); return out; } int main() { Int a(10),b(20); a.Print(); cin >> a >> b; a.Print(); b.Print(); cout << a << " " << b; }

2. 字符串流:istringstream/ostringstream

这两个是专门操作内存中字符串的流,不读写键盘 / 屏幕,只读写字符串变量,必须包含头文件<sstream>

(1)istringstream:字符串 → 数据(解析字符串)

作用:把一个字符串当成「输入源」,从中提取各种类型的数据(拆分字符串、类型转换)。

场景:字符串分割、把字符串转成数字。

#include <iostream> #include <sstream> // 必须包含 #include <string> using namespace std; int main() { string str = "100 200 3.14 hello"; istringstream iss(str); // 用字符串初始化输入流 int a, b; double c; string d; // 从字符串中「读取」数据,和 cin 用法完全一样 iss >> a >> b >> c >> d; cout << a << " " << b << " " << c << " " << d << endl; // 输出:100 200 3.14 hello return 0; }

(2)ostringstream:数据 → 字符串(拼接字符串)

作用:把各种类型的数据「写入」流中,最后合并成一个完整字符串。

场景:格式化字符串、多类型数据拼接(替代繁琐的+拼接)。

#include <iostream> #include <sstream> #include <string> using namespace std; int main() { ostringstream oss; // 创建输出流 int age = 20; double score = 95.5; string name = "张三"; // 向流中「写入」数据,和 cout 用法完全一样 oss << "姓名:" << name << ",年龄:" << age << ",分数:" << score; // 用 str() 方法获取最终拼接好的字符串 string result = oss.str(); cout << result << endl; // 输出:姓名:张三,年龄:20,分数:95.5 return 0; }

完美的对比表格:

类名父类作用数据来源 / 去向核心用途
istream基类输入流(只读)键盘、文件、设备从外部读取数据(cin 就是它)
ostream基类输出流(只写)屏幕、文件、设备向外部输出数据(cout 就是它)
istringstream继承 istream字符串输入流内存中的字符串把字符串拆成数据(字符串解析)
ostringstream继承 ostream字符串输出流写入内存字符串把数据拼接成字符串(格式化拼接)
http://www.jsqmd.com/news/592746/

相关文章:

  • 2025届必备的AI论文方案解析与推荐
  • 2026年心理咨询师培训报考避坑全指南:正规机构筛选5大黄金标准 - 企业推荐官【官方】
  • 5分钟掌握gInk:Windows上最简单高效的免费屏幕标注工具完整指南
  • GitHub访问速度慢?Fast-GitHub开源加速工具提升开发者效率方案
  • FontForge完整指南:免费开源字体设计工具的终极解决方案
  • 向量数据库与嵌入模型
  • 2026年全国心理咨询师考证培训正规机构综合实力测评报告 - 企业推荐官【官方】
  • 保姆级避坑指南:用MoveIt Setup Assistant配置UR3+AG95机械臂时,我踩过的三个编译与控制器大坑
  • 从 ReAct 到 Workflow:基于云端 API 构建事件驱动的智能体
  • 动态创建对象执行方法
  • 智能命名与文件管理:猫抓扩展的自动化命名规则实践指南
  • League-Toolkit:革新性英雄联盟全方位辅助工具集
  • 【5大突破】WarcraftHelper:让经典RTS重获新生的跨系统优化方案
  • 2026年心理咨询师行业合规发展深度报告:报考条件与正规培训机构全维度测评 - 企业推荐官【官方】
  • 瑞萨RH850F1KMS1串口DMA实战:用CS+和Smart Configurator解放CPU,实测吞吐量翻倍
  • 5分钟终极指南:如何让加密音乐文件重获自由
  • VMware ESXi 6.0实战:如何正确添加第二块磁盘作为数据存储(附RAID配置避坑指南)
  • BERTopic全栈应用指南:从认知颠覆到商业价值落地
  • NFL十年追踪数据与机器学习创新
  • 37、【Agent】【OpenCode】本地代理分析(一)
  • 2026年家庭教育指导师报考指南:行业合规测评、官方授权机构筛选与避坑标准全解析 - 企业推荐官【官方】
  • 用快马AI快速原型一个网页版PS基础工具:从描述到可运行代码
  • 打造个人游戏串流中心:Sunshine开源方案全攻略
  • [技术突破]:Qwen-Image-Edit-Rapid-AIO如何重构图像编辑效率边界?
  • 告别混乱:用Alternative Mod Launcher重塑XCOM 2模组管理体验
  • 5步攻克AI到PSD无损转换:设计师必备的矢量分层工作流指南
  • 38、【Agent】【OpenCode】本地代理分析(二)
  • 实测梦幻动漫魔法工坊:用LoRA调整画风,轻松打造不同风格的动漫作品
  • 浪琴官方售后服务中心新址实地考察报告(2026年4月最新地址电话) - 亨得利官方服务中心
  • 避坑指南:淘晶驰串口屏文件浏览器控件中文乱码?用UTF8字库5分钟搞定!