c++ IO流---字符流
包含头文件 <sstream> 是一个(父)类
有2个子类 → 分别用于做输入、输出流操作
c++流类体系就是一个继承体系(字符流对象)
istringstream类 做输入的字符流类 只能作input
ostringstream类 做输出的字符流类 只能作output
做字符串处理一般需要可读可写的方式,用stringstream类的对象(中间类)即可
一般会把字符放入字符流对象中去,如何获取字符流对象中的数据?
string str() 获取string
void str(const string& str) 重载版本 重新设置字符流对象的数据
作用单一:字符流对象一般用于做字符串处理
字符串分割
字符串转换问题
构造方式
stringstream不存在无参构造方式,不存在用 = 的构造方式
void teststringstream()
{//构建字符流对象,以及获取字符流对象中数据stringstream sso(string("ILoveyou")); //直接构建一个字符串放进去cout << sso.str() << endl;//无参构造stringstream ssnull; //把数据流进去 ssnull << "我爱你!"; cout << ssnull.str() << endl;/*报错 不存在适当的构造函数stringstream ss = string("IMissyou");stringstream ss = "imissyou;" */
}int main()
{teststringstream();
}
/*输出*/ILoveyou
我爱你!
打印流对象的数据
cout << sso.str() << endl; //对象调用成员函数的方式 直接.str()就可以读到流里面的数据
通过左移右移操作流动数据<--->把数据从字符流对象中流出来 或 把数据流到字符流对象中去
小知识: 上面是把数据流到字符流对象中去,怎么把数据从字符流对象中流出来?
void teststringstream()
{stringstream ssnull; ssnull << "我爱你!";string data;//直接用右移就把数据流出来ssnull >> data; cout << data << endl;//数据流出来后,字符流对象中还有没有东西? 类似拷贝一份出来 数据还在 cout<<ssnull.str()<<endl;
}
int main()
{teststringstream();
}
/*输出*/我爱你!
我爱你!
怎么清除原来流对象中的数据?
void teststringstream()
{stringstream ssnull; ssnull << "我爱你!";string data;ssnull >> data;cout << data << endl;//通过string来设置 把它设置为空相当于清除了当然也可以设置为其他字符串ssnull.str("");cout<<ssnull.str()<<endl;
}
int main()
{teststringstream();
}
/*输出*/我爱你!
字符串与数字之间转换
把数字转为字符串
先把整数、字符 流进去,再按字符串的方式流出来即可,从而达到把 数字|字符1234 转换为字符串"1234"的效果
void teststringstream()
{int num = 1234;char input[20] = ""; //准备一个空的字符串stringstream transs(input); //做一个空的流对象transs << num; //流入数据transs >> input; //再流出来cout << input << endl;}
int main()
{teststringstream();
}
/*输出*/1234(直接把数字1234转换为字符串1234)
把字符串转为数字
创建一个流对象,把要转换的字符串放进去,用字符流对象的方式流入变量中即可
void teststringstream()
{stringstream snum("12345"); //构建一个对象 传入参数(把要转换成数字的字符串放进去)int temp = 0;snum >> temp; //把字符串流入整型变量temp中cout << temp << endl; //输出
}
int main()
{teststringstream();
}
/*输出*/12345(把字符串12345转换为数字12345)
小知识:
对于流的控制,输入的数据是不是 整数或字符 要根据你的格式控制、接收变量的类型去判断
输入字符串,要求做分割 把每个整数和,分割出来
void teststringstream()
{//分割stringstream sData("23,132,3443,54,54,65"); //构建一个流对象int numData[6]; //6个整数char cData[5]; //5个逗号for (int i = 0; i < 6; i++){if (i == 5) //i等于5不能再读了 最后一次没有逗号sData >> numData[i];elsesData >> numData[i] >> cData[i]; //第一个数据是整数 第二个数据是字符','}for (int i = 0; i < 6; i++){cout << numData[i] << " ";}for (int i = 0; i < 5; i++){cout << cData[i] << " ";}
}
int main()
{teststringstream();
}/*输出*/23 132 3443 54 54 65 , , , , , //整数和字符被分割出来了
多次对同一个流对象做数据转换操作一定要用clear做重置操作,把当前位置移到原来开始的位置,还原为初始位置
void teststringstream()
{//字符串与数字之间转换int num = 1234;char input[20] = "";stringstream transs(input);transs << num;transs >> input;cout << input << endl;//多次同一个流对象做数据转换操作一定要做clear操作transs.clear(); transs << num;transs >> input;cout << input << endl;
}
int main()
{teststringstream();
}
/*输出*/1234
//没有clear操作不会输出这一行
1234
小知识:流操作类似c语言的输入,c语言中根据格式控制字符去输入缓冲区中拿数据,字符流对象类似一个字符流的缓冲区,也会根据变量类型从字符流对象中去拿什么数据,拿的数据不对就会出现乱码
键盘输入 从键盘到程序
字符流 从对象到变量
int main()
{char str[20] = "";int num;//c语言根据格式控制字符去输入缓冲区去拿数据scanf_s("%d%s", &num, str,20); //c++没有格式控制字符,需要根据变量类型决定去拿数据cout << num << " " << str << endl;
}
/*输入*/12 iloveyou/*输出*/12 iloveyou
c++ IO流---字符流相关推荐
- Java IO: 其他字符流(下)
转载自 Java IO: 其他字符流(下) 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackRe ...
- java io字符流_Java IO流字符流简介及基本使用
Java IO流字符流简介及常用字符流的基本使用 字符流分为输入字符流(Writer)和输出字符流(Reader),这两种字符流及其子类字符流都有自己专门的功能.在编码中我们常用的输出字符流有File ...
- 第十五章 IO流(转换流 字符流 字符缓冲流 打印流)
Java基础15 第十五章 IO流(转换流 字符流 字符缓冲流 打印流) 15.1 字符编码和字符集 15.1.1 字符编码 15.1.2 字符集 15.1.3 String类getBytes()方法 ...
- Java字节缓冲流/字符流/IO流小结
文章目录 字节缓冲流 字节缓冲流构造方法 字符流 为什么会出现字符流 编码表 字符串中的编码解码问题 字符流中的编码解码问题 字符流写数据的5种方式 字符流读数据的2种方式 字符缓冲流 字符缓冲流特有 ...
- java IO流---字符流
为什么需要字符流? 由于字节流操作中文不是特别的方便,所以Java就提供字符流 字符流 = 字节流+编码表 用字节流复制文本文件时,文本文件也会有中文,但是没有问题,因为最终底层操作会自动进行字节拼接 ...
- IO流 字符流 字节流 缓冲流 文件的复制
IO流 IO概述 IO流就是一个管道,是用来在设备之间传输数据 input:相对于内存/程序 往进走输入流 output:相对于内存/程序 往硬盘写入 分类 根据数据进出方式 1.输出流: FileW ...
- java IO(输入输出) 字符流
//读取文件中的字符 package zhi_jie_liu;import java.io.*;public class Example08 {public static void main(Stri ...
- Java学习笔记之 IO包 字符流
字符流:Writer/Reader(字符流) 通过子类FileWriter和FileReader实现父类实例化 package iotest; import java.io.File; import ...
- JAVA Io 流 字符流 编码表 编码和解码的方法
字节流,用中文可能会出现乱码 计算机中存储的信息都是二进制表示的 按照某种规则将字符编程二进制 再存储到计算机中,成为编码 按照同样规则,在计算机中二进制数解析出来,成为解码 编码和解码的方式必须一致 ...
- Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...
最新文章
- 转载:DIV+CSS有可能遇到的问题
- CentOS系统安装配置JDK
- Spark SQL之External DataSource外部数据源(二)源代码分析
- CSS扩展“less和”sass“
- 基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...
- 8年了,这几个时间API你用过吗?
- 简述数据在OSI参考模型中的流动过程及过程中数据的单位
- 苹果新iPad Pro代工订单或将推升富士康4月份营收
- 如不指定存储类型c语言,总结C语言的五种存储类型
- Kettle(Pentaho Data Integration) 下载安装使用介绍/功能汇总
- quick cocos2dx 组件使用要领
- STM32CubeMX学习笔记(26)——SDIO接口使用(读写SD卡)
- MySQL-Workbench数据库备份
- 误删微信聊天记录觉得手足无措?免费教你如何恢复
- kafka_2.11 简单使用
- 简单爬取红牛分公司基本数据part01
- 深度学习1:二分类问题
- 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)
- 《无极限之危情速递》观后感
- 个人常用VScode插件及其配置