news 2026/4/8 6:14:54

C++ istringstream

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ istringstream

1. istringstream是什么
2. 它的 “规则” 是什么?
3. 什么能分割,什么不能分割?
4. 基本用法:按空白符分割
5. 实践练习
6. 学习要点总结

一. istringstream是什么

istringstream:字符串的流式读取器(简明扼要

1️⃣ 一本书 📚

string line="Hello World C++";

就像一本合上的书,文字都在里面,但无法逐页阅读。

2️⃣ 阅读器 📱

istringstreamiss(line);

就像把书放入电子阅读器,现在可以一页页翻看了!

3️⃣ 翻页阅读 👆

iss>>word;// 读取一个单词

🎬 完整过程演示

string book="The quick brown fox";istringstreamreader(book);// 放入阅读器string page;reader>>page;// 翻到第1页: "The"reader>>page;// 翻到第2页: "quick"reader>>page;// 翻到第3页: "brown"reader>>page;// 翻到第4页: "fox"

学习要点总结

书 → 阅读器 → 翻页 = 字符串 → istringstream → >> 操作符

  • 阅读器让静态文字变成可流动阅读的内容
  • 每次翻页(>>)自动处理多余空白
  • 阅读器知道什么时候读完(流状态)

二.它的 “规则” 是什么?

操作符的默认行为:

  1. 跳过前导的空白字符(空格、制表符、换行符等)
  2. 读取直到遇到下一个空白字符
  3. 不包含空白字符本身

三.什么能分割,什么不能分割?

✅ 能自动处理的情况:

cpp"a b c"// → "a", "b", "c" (多个空格)" hello world "// → "hello", "world" (前后空格)"one\ttwo\nthree"// → "one", "two", "three" (制表符、换行符)

❌ 不能直接处理的情况:

cpp// 1. 按逗号分割"apple,banana,cherry"// → 会得到 "apple,banana,cherry" (整个字符串)// 而不是 "apple", "banana", "cherry"// 2. 按特定字符分割"192.168.1.1"// → 会得到 "192.168.1.1" (整个字符串)// 而不是 "192", "168", "1", "1"// 3. 保留空字段"a,,c"// → 会得到 "a", "c" (跳过空字段)// 而不是 "a", "", "c"

如果要 “随意分割” 怎么办?
对于复杂的分割,需要 std::getline + 分隔符:

cpp#include<iostream>#include<sstream>#include<string>intmain(){std::string data="apple,banana,cherry";std::istringstreamiss(data);std::string fruit;// 按逗号分割while(std::getline(iss,fruit,',')){std::cout<<fruit<<std::endl;}// 输出:// apple// banana// cherryreturn0;}

四.基本用法:按空白符分割

cpp string text="C++ is awesome!";istringstreamiss(text);string word;while(iss>>word){// >> 操作符自动跳过空格cout<<word<<endl;}// 输出:// C++// is// 练习1:单词计数器

处理多种数据类型

cpp string info="Alice 25 165.5 true";istringstreamiss(info);string name;intage;doubleheight;boolenrolled;iss>>name>>age>>height>>enrolled;

五.实践练习

练习2:成绩计算器

cpp string scores="85 92 78 88 95";istringstreamiss(scores);intscore,total=0,count=0;while(iss>>score){total+=score;count++;}cout<<"平均分: "<<(double)total/count<<endl;

练习3:提取数字

cpp string mixed="abc 123 def 456 ghi";istringstreamiss(mixed);string token;intnumber;while(iss>>token){istringstreamtemp_iss(token);if(temp_iss>>number){cout<<"找到数字: "<<number<<endl;}}

练习3:单词排序与去重

cpp string text="apple banana apple orange banana";istringstreamiss(text);string word;set<string>unique_words;while(iss>>word){unique_words.insert(word);}// unique_words: {"apple", "banana", "orange"}

✅ 学习要点

  1. istringstream 将字符串转换为可读取的流
  2. 操作符按空白符分割并自动类型转换
  3. 适用于格式规范的文本解析
  4. 配合getline() 可实现按指定分隔符分割
  5. 是 C++ 中处理字符串分割的优雅解决方案
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 16:45:19

ms-swift支持序列分类任务构建情感分析解决方案

ms-swift 构建情感分析系统的实践路径 在当今企业智能化转型的浪潮中&#xff0c;如何从海量用户文本中快速提取情绪倾向&#xff0c;已成为客服系统、社交舆情监控和产品反馈分析的核心能力。传统的情感分析方案多依赖小型模型&#xff08;如 BERT-Base&#xff09;&#xff0…

作者头像 李华
网站建设 2026/4/1 17:30:45

SPA首屏加载速度慢的怎么解决

SPA&#xff08;单页应用&#xff09;首屏加载慢的核心原因是 首次需要加载大量的 JS 包、资源文件&#xff0c;且路由渲染依赖前端 JS 解析&#xff0c;容易出现 “白屏” 或加载延迟。以下是一套分层优化方案&#xff0c;从资源层面、渲染层面、网络层面逐步解决&#xff1a;…

作者头像 李华
网站建设 2026/3/11 22:25:10

基于Simulink的基于IMU与编码器融合的姿态估计仿真

目录 手把手教你学Simulink 一、引言&#xff1a;为什么“仅靠IMU或仅靠编码器都无法准确估计人形机器人躯干姿态”&#xff1f; 二、理论基础&#xff1a;姿态表示与传感器原理 1. 姿态表示&#xff1a;欧拉角&#xff08;俯仰 Pitch&#xff09; 2. IMU测量模型 3. 编码…

作者头像 李华
网站建设 2026/3/30 14:14:31

python基于django的文化旅游服务系统 小程序系统_zd17ihwo

目录系统概述核心功能技术架构安全与扩展性应用场景关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Python基于Django的文化旅游服务系统结合了Web后端与小程序前端&#…

作者头像 李华
网站建设 2026/4/2 6:33:26

安科瑞智慧能源平台赋能光储电站容量优化与协调控制

唐雪阳安科瑞电气股份有限公司 上海嘉定 201801一、引言储能型光伏电站是破解可再生能源间歇性、不稳定性难题的关键路径&#xff0c;对提升能源利用率、保障电网稳定运行、推动绿色能源转型具有重要意义。随着光伏技术迭代与成本下降&#xff0c;光伏发电在能源结构中的占比持…

作者头像 李华
网站建设 2026/3/18 1:42:42

Windows 下升级 R 语言至最新版

第一步:打开 PowerShell(以管理员身份运行) 按 Win + X 选择 “Windows PowerShell (管理员)” 或 “终端(管理员)” 等待弹出窗口(黑底白字,标题为 “PowerShell”) 第二步:复制并粘贴以下完整脚本 # 设置进度偏好(静默下载) $ProgressPreference = SilentlyContin…

作者头像 李华