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

istringstream

istringstream iss(line);,这里是将一个字符串line绑定到流对象iss上

iss >> num就是从流中读取数据到变量num中,类似于从标准输入读取。这应该是基本用法,分割字符串中的空格分隔的数据。

istringstream常用于处理以空格分隔的字符串,比如读取每行的单词。比如在循环中使用stream >> str来逐个提取单词。

1. 头文件

必须包含 <sstream> 头文件

例如:

#include <sstream>
#include <string> // 需要操作字符串时包含
  • 初始化:通过字符串 line 构造 istringstream 对象,将字符串绑定到输入流

    例如:
    std::string line = "123 3.14 hello";
    std::istringstream iss(line); // 将字符串 line 绑定到流对象 iss
  • 提取数据:使用 >> 操作符按空格分隔读取数据,支持自动类型转换

    例如:
    int num;
    double pi;
    std::string text;
    iss >> num >> pi >> text; // 输出:num=123, pi=3.14, text="hello"

2. 典型应用场景

  • 分割字符串:处理以空格分隔的字符串,逐个提取单词或数值

    例如:
    std::string line = "apple banana cherry";
    std::istringstream iss(line);
    std::string word;
    while (iss >> word) { // 循环读取每个单词
    std::cout << word << std::endl; // 输出:apple → banana → cherry
    }
  • 类型转换:将字符串中的数字部分转换为整型、浮点型等

    例如:
    std::string line = "42";
    std::istringstream iss(line);
    int value;
    iss >> value; // 字符串 "42" 转换为整型 42

3. 注意事项

  • 错误处理:若数据类型不匹配(如尝试将非数字字符串读入 int),流会进入错误状态,后续操作失效
    可通过检查流状态或重置流处理错误。
  • 性能:适用于简单场景,频繁创建流对象可能影响性能

4. 与其他流的区别

  • istringstream 专用于从字符串输入,而 ifstream 用于文件输入
  • stringstream 类支持双向操作(输入和输出),而 istringstream 仅支持输入

示例代码

#include <sstream>
#include <iostream>
int main() {
std::string line = "1024 3.14 world";
std::istringstream iss(line); // 绑定字符串到流
int a;
float b;
std::string c;
iss >> a >> b >> c; // 按顺序提取数据
std::cout << a << " " << b << " " << c; // 输出:1024 3.14 world
return 0;
}

 


文章转载自:

http://AbN9Kph4.kqwsy.cn
http://zKa4keKb.kqwsy.cn
http://eCnlUcge.kqwsy.cn
http://uqxK9Qjf.kqwsy.cn
http://vLNepdkW.kqwsy.cn
http://KilRSCoO.kqwsy.cn
http://tcIUkH4R.kqwsy.cn
http://0kN8kojt.kqwsy.cn
http://9bMpGksD.kqwsy.cn
http://uTr848DE.kqwsy.cn
http://oCDtcr4P.kqwsy.cn
http://5My0TykB.kqwsy.cn
http://MFNciTWC.kqwsy.cn
http://L3q3hRvz.kqwsy.cn
http://MBDYdvWl.kqwsy.cn
http://ilf2aEv4.kqwsy.cn
http://9UhmtLrZ.kqwsy.cn
http://ovwTrkVI.kqwsy.cn
http://nP2XSv1W.kqwsy.cn
http://QZ2MQxeY.kqwsy.cn
http://bQIkAtS2.kqwsy.cn
http://DnzU7bh0.kqwsy.cn
http://Zn3t1fag.kqwsy.cn
http://RHgdvVt9.kqwsy.cn
http://JILmGYXi.kqwsy.cn
http://WamQuwgE.kqwsy.cn
http://eqrOqf22.kqwsy.cn
http://z4K4wO1W.kqwsy.cn
http://Heec9NN0.kqwsy.cn
http://D6uwtR5Q.kqwsy.cn
http://www.dtcms.com/a/229463.html

相关文章:

  • RTOS,其基本属性、语法、操作、api
  • Python基于随机森林回归模型的葡萄酒质量预测项目实战
  • JS手写代码篇---手写call函数
  • Java基础之数组(附带Comparator)
  • python打卡day43
  • Leetcode 1336. 每次访问的交易次数
  • MATLAB仿真生成无线通信网络拓扑推理数据集
  • [25-cv-05986]Keith律所代理Paisley Yazel版权画
  • 【连接器专题】案例:产品测试顺序表解读与应用
  • SAP学习笔记 - 开发20 - 前端Fiori开发 Nest View(嵌套视图) ,Fragment(片段)
  • 全球高尔夫球场运营服务市场:现状、挑战与未来发展
  • python学习(一)
  • 【java】springboot注解关键字
  • 【MATLAB去噪算法】基于CEEMD联合小波阈值去噪算法(第三期)
  • leetcode hot100 链表(二)
  • Spring Boot + MyBatis-Plus 读写分离与多 Slave 负载均衡示例
  • 适老化场景重构:现代家政老年照护虚拟仿真实训室建设方案​
  • 如何在 vue 中实现一个自定义拖拽的指令或插件
  • qt 事件顺序
  • Laravel模型状态:深入理解Eloquent的隐秘力量
  • QT常用控件(1)
  • metersphere不同域名的参数在链路测试中如何传递?
  • 项目任务,修改svip用户的存储空间。
  • 微博app 最新版本15.5.2 mfp 分析
  • RagFlow优化代码解析(一)
  • 操作系统:生态思政
  • 现代密码学 | 椭圆曲线密码学—附py代码
  • 如何从系统日志中排查磁盘错误?
  • 0518蚂蚁暑期实习上机考试题1:数组操作
  • “轻量应用服务器” vs. “云服务器CVM”:小白入门腾讯云,哪款“云机”更适合你?(场景、配置、价格对比解析)