【C++库函数】stringstream-类型转换&&字符分割
继续填坑٩(•̤̀ᵕ•̤́๑),这次是 stringstream的内容,最初是看到它可以把字符串直接输出成int类型,惊了,但是一直不是很懂。在网上查了很多资料,才终于差不多理解。stringstream 是C++提供的一个字符串流,和 cin,cout 输入输出流类似,只不过它不是从从键盘或文件输入,也不是输出到屏幕或文件中,而是接受一个对象的输入,或把缓存区的内容输出到一个对象中。具体可以用在类型转换和字符分割中。
基本方法(操作)
clear()-用来清空流标志(输入,输出标志)
str()-获得当前流中的内容
str("content")-设置流的内容(或清空流的内容)
operator <<-添加内容到stringstream对象
operator >>-从stringstream流缓存区中输出内容
应用
类型转换
int a;
string s;
stringstream ss;
//int型转换为字符串类型
ss << a; //将a输入流中(输入模式)
ss >> s; //将流中的数值输出到字符串s中(输出模式)
//字符串类型转换为int型
ss << s; //将字符串输入到流中
ss >> a; //将流中的字符串输出到int型变量a中
//注意:如果做多次数据转换须调用clear()和str("")来清空输入输出标志和内容
int a = 0, b = 0;
stringstream ss;
ss << "123";
ss >> a;
ss.clear();
ss.str("");
ss << "456";
ss >> b;
cout << "a:" << a << endl;
cout << "b:" << b << endl;
cout << "ss:" << ss.str() << endl;
//运行结果,不加clear()和str("");
a:123
b:0
ss:123
//原因:不加clear()和str(""),流处于输出模式无法接收新内容"456"且未被清空,所以ss仍为"123",又由于缓存区的内容已输出到a中,所以b中无内容。
//运行结果,加clear()但不加str("");
a:123
b:456
ss:123456
//原因:加入clear()清空模式,可以接收新内容"456",所以ss:123456。缓存区依次缓存"123","456"并分别输出到a, b,所以a:123, b:456
//运行结果,加clear()和str("");
a:123
b:456
ss:456
//原因:clear()清空模式,str("")清空ss对象的内容。
支持char*的输入和输出
char ch[20];
stringstream ss;
ss << 2333;
ss >> ch; //直接将数输出到ch字符数组中
字符分割
stringstream ss("hello hi hey");
string word;
while(ss >> word){
cout << word << endl;
}
//运行结果
hello
hi
hey
三种给stringstream对象赋初值的方式
stringstream ss("123"); //创建的时候赋初值
ss.str("123"); //str()函数赋值
ss << "123"; //操作符"<<"添加内容(需注意当前模式)
将C++中的stringstream转换为char类型可以通过以下步骤实现:
- 将stringstream中的字符串读入一个string类型的变量中。
- 将string类型的变量转换为const char*类型的指针。
- 将const char*类型的指针拷贝到char类型的数组中。
#include <iostream>
#include <sstream>
#include <string.h>
int main() {
std::stringstream ss;
ss << "This is a test";
std::string str;
ss >> str;
const char* cstr = str.c_str();
char char_array[strlen(cstr)];
strcpy(char_array, cstr);
std::cout << char_array << std::endl;
return 0;
}
【C++库函数】stringstream-类型转换&&字符分割的更多相关文章
- EasyPR--开发详解(7)字符分割
大家好,好久不见了. 一转眼距离上一篇博客已经是4个月前的事了.要问博主这段时间去干了什么,我只能说:我去“外面看了看”. 图1 我想去看看 在外面跟几家创业公司谈了谈,交流了一些大数据与机器视觉相关 ...
- CDH5.4.5运行多字符分割记录
准备工作: 测试文件内容:cis_cust_imp_info 20131131|+|100010001001|+|BR01|+|2000.0120131131|+|100010001002|+|BR0 ...
- Python中通过多个字符分割(split)字符串的方法
python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('-|_','sharejs_ha ...
- 车牌识别LPR(六)-- 字符分割
第六篇:字符分割 在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割.一般最容易想到的方法就是根据车牌投影.像素统计特征对车牌图像进行字符分割的方法.是一种最常用的.最基本的.最简单的车牌字 ...
- SOM聚类与Voroni图在验证码字符分割中的应用
http://www.docin.com/p-1300981517.html SOM聚类与Voroni图在验证码字符分割中的应用
- EasyPR源码剖析(8):字符分割
通过前面的学习,我们已经可以从图像中定位出车牌区域,并且通过SVM模型删除“虚假”车牌,下面我们需要对车牌检测步骤中获取到的车牌图像,进行光学字符识别(OCR),在进行光学字符识别之前,需要对车牌图块 ...
- opencv 车牌字符分割 ANN网络识别字符
最近在复习OPENCV的知识,学习caffe的深度神经网络,正好想起以前做过的车牌识别项目,可以拿出来研究下 以前的环境是VS2013和OpenCV2.4.9,感觉OpenCV2.4.9是个经典版本啊 ...
- Python中通过多个字符分割(split)字符串的方法--转载
Python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('_#|','this_is#a| ...
- C# 如何用多字符分割字符串
用单字符分割字符串大家应该很熟悉,例如: string source = "dfd^Afdf^AAAAAA^Adfdf"; var list= source.Split('A'); ...
- php把字符串指定字符分割成数组
<?php $str="1|2|3|4|5|"; $var=explode("|",$str); print_r($var); ?> $var=ex ...
随机推荐
- 每日总结|9.21-Hive搭建及报错解决方案
搭建 安装hive 把 apache-hive-3.1.2-bin.tar.gz 上传到 linux 的/opt/software 目录下 解压 apache-hive-3.1.2-bin.tar.g ...
- Centos 7在线安装JDK1.8+Tomcat+MySQL8.0+Nginx
一.安装JDK 注: 以下命令环境在Xshell中进行. 温馨提示: 在线安装方式需要有网速的前提,有的软件下载需要大量时间. 1.查询出系统自带的OpenJDK及版本 rpm -qa | grep ...
- 详细一些的vue生命周期
如果你和我一样,以前对vue生命周期的理解仅限于生命周期钩子,那么本文可以让我们更深入一层,理解vue在生命周期各个阶段所做的事,对我们对vue的理解和使用很有好处. (1)通过new Vue()创建 ...
- Linux笔记03: Linux常用命令_3.5权限管理命令
3.5 权限管理命令 3.5.1 权限介绍 1.为什么需要权限 绝大多数用户使用的是个人计算机,而使用个人计算机的用户一般都是被信任的用户(如家人.朋友等).在这种情况下,大家都可以使用管理员身份直接 ...
- [AGC038E] Gachapon
Problem Statement Snuke found a random number generator. It generates an integer between $0$ and $N- ...
- [ARC160F] Count Sorted Arrays
Problem Statement There are an integer $N$ and $M$ pairs of integers: $(a_1, b_1), (a_2, b_2), \dots ...
- 安装NETDATA集群监控面板
安装NETDATA集群监控面板 介绍 官方链接 演示网页:https://my-netdata.io/ 官方首页:http://netdata.cloud/ 文档地址:http://docs.netd ...
- 解决swagger2 --> Illegal DefaultValue null for parameter type integer 保存问题
在pmo.xml中加入两个依赖 <!--增加两个配置--> <dependency> <groupId>io.swagger</groupId> < ...
- 文心一言 VS 讯飞星火 VS chatgpt (163)-- 算法导论13.1 3题
三.用go语言,定义一棵松弛红黑树(relaxed red-black tree)为满足红黑性质 1.3.4 和5的二叉搜索树.换句话说,根结点可以是红色或是黑色.考虑一棵根结点为红色的松弛红黑树 T ...
- Hash-based Message Authentication Code(HMAC)
一.引言 在现代信息安全领域,消息认证码(Message Authentication Code,简称MAC)起着至关重要的作用.Hash-based Message Authentication C ...