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

打怪升级之istringstream介绍

istringstream类

istringstream本质不是类,是一个宏,或者说是一个流:

typedef basic_istringstream<char> istringstream;

istringstream从basic_istringstream的char专用项而来。这一部分让人看得摸不着头脑的原因是因为大量使用了stream的语法,如果有像我一样的新手的话强烈建议去找C++PrimerPlus去看看里面讲。

援引自笔者一个朋友(大佬)的原话是这样的:
istringstream是一个宏,通过typedef展开到basic_istringstream。

这个basic_istringstream继承自basic_istream并重载了operator>>运算符。

template <class Elem, class Tr = char_traits<Elem>, class Alloc = allocator<Elem>>
class basic_istringstream : public basic_istream<Elem, Tr>

可以看到确实是继承自basic_istream类,且basic_istream类中也确实有基础运算符。这解释了为什么这个对象可以像流一样用。

iostream比较像一个黑箱,里边包装了文件或字符串操作。具体来说,(i/o/)fstream封装了文件操作,(i/o/)stringstream封装了字符串操作,他们一起抽象为(i/o/io)stream。

istringstream类支持>>操作,ostringstream类支持<<操作,stringstream类支持>>和<<操作。

通过这样流对象的构造函数,我们可以写入或写出一些东西。

basic_istringstream(basic_istringstream&& right);

初始化,并加载right值作为一种流。

案例

#include <iostream>
#include <sstream>
using namespace std;int main() 
{istringstream is("I am\tlove C++\nand I love C");string str;//默认是空格或者回车符或者tab,会输出如下内容:I am love C++ and I love Cwhile (is >> str) {cout << str << endl;}getchar();return 0;
}

结果:

I
am
love
C++
and
I
love
C

空格或者\会作为流的分界符,一个一个输出。

http://www.lryc.cn/news/35996.html

相关文章:

  • 系统重装漏洞
  • C++面向对象编程之五:友元(friend)
  • [手写OS]动手实现一个OS 之X86实模式下的汇编开发
  • 【Linux内核二】常用的网络丢包错包debug工具介绍
  • qt控件增加渐变色效果
  • 【node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 最全面有效的解决方案】
  • 打怪升级之字符串的分界符与字符串替换
  • 载荷台子使用方式
  • 1005 继续(3n + 1)猜想
  • VMware15配置NAT模式联通网络
  • doPost的实际使用
  • 2017年MathorCup数学建模A题流程工业的智能制造解题全过程文档及程序
  • HNU-电子测试平台与工具2-数模转换
  • CentOS7安装Telnet客户端和服务端和使用方式
  • 脂肪毒性的新兴调节剂——肠道微生物组
  • 【JavaSE系列】 第九节 —— 多态那些事儿
  • ego微商小程序项目-测试步骤
  • 华为OD机试用Python实现 -【报数游戏】2023Q1 A卷
  • Plsql使用
  • 小丑改造计划之四线程控制
  • Spring注册Bean的几种方式
  • Egg:使用joi进行参数校验以及注册接口小demo
  • 天梯赛训练L1-016(查验身份证)
  • 技术方案评审
  • Python机器学习库scikit-learn在Anaconda中的配置
  • yarn init 没有 ts 类型声明
  • 孩子喜欢打人父母要怎么引导?听听专家的小建议
  • Hive中order by,sort by,distribute by,Cluster by
  • PyTorch的自动微分(autograd)
  • sum-check protocol