当前位置: 首页 > 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://www.lqws.cn/news/101485.html

相关文章:

  • ArrayList和LinkedList(深入源码加扩展)
  • 如何在PowerBI中使用Analyze in Excel
  • 基于springboot的图书管理系统的设计与实现
  • React 项目初始化与搭建指南
  • windows可视化粘贴使用剪贴板
  • 湖北理元理律师事务所:法律视角下的债务优化与生活平衡之道
  • 小体积涵盖日常办公等多功能的软件
  • NLP学习路线图(二十一): 词向量可视化与分析
  • unity UI Rect Transform“高”性能写法
  • 第1章_数据分析认知_知识点笔记
  • 强化学习鱼书(10)——更多深度强化学习的算法
  • 前端与后端
  • uniapp+vue2+uView项目学习知识点记录
  • HertzBeat的安装和使用教程
  • Manus AI与多语言手写识别的创新革命:从技术突破到行业赋能
  • Python与数据分析期末复习笔记
  • 【C/C++】template 入门到高阶简单大纲
  • 【Python进阶】装饰器
  • Python 训练营打卡 Day 34-GPU训练及类的call方法
  • 如何爬取google应用商店的应用分类呢?
  • 深入解析Playwright for Python:浏览器功能与代码实例详解
  • Python数据可视化科技图表绘制系列教程(一)
  • 用python制作一个消消乐游戏(限时关卡挑战版)
  • 机器学习——聚类算法
  • Dify:用Celery构建高性能异步任务处理系统
  • 力扣刷题Day 69:搜索二维矩阵(74)
  • LabelMe安装踩坑
  • Numpy入门1——创建、数据类型、属性、和列表的差异
  • Rust 学习笔记:使用自定义命令扩展 Cargo
  • 转战海外 Web3 远程工作指南