当前位置: 首页 > 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;
}

 

相关文章:

  • 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的隐秘力量
  • 包装设计的网站/滨州seo招聘
  • 东莞长安网站建设/做推广的技巧
  • 贵阳市做网站电话/在线磁力搜索引擎
  • dw做网站视频教程/各行业关键词
  • 宜昌最权威网站建设公司/友情链接免费发布平台
  • 华为云做网站不能修改页面/网络营销方法有哪些?