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

相关文章:

  • qt 事件顺序
  • Windows安装PostgreSQL(16.9)
  • 半导体行业-研发设计管理数字化转型案例分享
  • 【Typst】6.布局函数
  • c# 显示正在运行的线程数
  • lsinitramfs命令
  • 新德通科技:以创新驱动光通信一体化发展,赋能全球智能互联
  • Vue3.5 企业级管理系统实战(二十二):动态菜单
  • 代码随想录60期day56
  • 海盗64位GameServer的使用体验
  • 【自动思考记忆系统】demo (Java版)
  • 记一次sql按经纬度计算距离
  • 市面上有真正的静态住宅ip吗?
  • android NDK 的 -> 是什么意思
  • LRC and VIP
  • mac环境下的python、pycharm和pip安装使用
  • C++核心编程_ 函数调用运算符重载
  • PPO: Proximal Policy Optimization Algorithms
  • 全面解析 Windows CE 定制流程:从内核到设备部署
  • 基于MATLAB的FTN调制和硬判决的实现
  • 手把手教你用Appsmith打造企业级低代码平台:从部署到性能调优实战
  • PPO和GRPO算法
  • 大模型的外围关键技术
  • 【面试】音视频面试
  • 亮数据网页解锁器:让数据触手探索亮数据解锁工具:打破网页数据采集的局限
  • GPIO的内部结构与功能解析
  • Spring Boot Actuator未授权访问漏洞修复
  • RS232/RS485 光电隔离转换器DAM-3210A
  • 学习STC51单片机26(芯片为STC89C52RCRC)
  • Python训练营打卡Day42