【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 ...
随机推荐
- 3C智能移动周边产品龙头企业如何集成企业内部所有异构系统数据
全面并自动集成品胜集团全域业务系统中的各类业务数据:结构化.标准化.自动化集团全部异构系统数据,提升全公司整体项目管理水平:梳理与简化跨部门.跨系统流程,清晰定义流程节点及业务边界,打通部门间信息流通 ...
- BS页面设计 | 寻梦环游记电影介绍
- JavaWeb项目练习(学生选课管理系统)三【登录功能】
需求: 首页为用户登录页面,管理员,教师,学生三种角色用户登录后,进入相应的功能页. 在index.jsp文件里跳转到login.jsp页面,为了更好地书写 <%@ page contentTy ...
- ABAP 标准程序选择屏增强 文本显示异常问题处理 MB52 示例 INITIALIZATION. "变量参数:%_ + 屏幕选择字段变量 + _%_APP_%-TEXT %_SSKH_%_APP_%-TEXT = '所属客户'.
数据筛选 文本 INITIALIZATION. "变量参数:%_ + 屏幕选择字段变量 + _%_APP_%-TEXT %_SSKH_%_APP_%-TEXT = '所属客户'.
- com.alibaba.nacos.api.exception.NacosException
具体异常如下: com.alibaba.nacos.api.exception.NacosException: <html><body><h1>Whitelabel ...
- Chat2DB接入文心一言AI教程(原创教程,转载请注明)
引言 关于Chat2DB和文心一言是啥我就不赘述了,由于Chat2DB自带的ai有调用次数限制,所以想着接入百度的文心AI,但是由于网上没有找到相关的教程,此教程是本人研究了很久才弄出来的,顺便记录一 ...
- 解决yolo+cudnn+opencv+gpu的一些问题
问题描述: 在makefile文件中修改GPU=1 CUDNN=1 OPENCV=1,然后重新make,执行命令时出现: Yolov3 darknet: ./src/cuda.c:36: check_ ...
- LeetCode190:颠倒二进制(位运算分治! 时间复杂度O(1))
解题思路:这道题很两种解法,常规的就是O(n),另一种就是巧妙的利用位运算实现分治,时间复杂度O(1),类似于归并排序.不过这个递归不是自顶向下,而是巧用位运算从自底向上实现. 比如01001000通 ...
- 数字孪生技术与VR技术的结合会为我们带来什么?
数字孪生技术与虚拟现实(VR)技术的结合为我们打开了全新的可能性和机遇.这个强大的联合为各个领域带来了巨大的影响和创新. 首先,数字孪生技术与VR技术的结合可以为设计和规划过程提供更直观.身临其境的体 ...
- MagicArray基本使用方法
MagicArray致力于让研发不再卷,这个灵感来源于php语言,可能多少年以后,php可能不会有太多人记得.但是在一个年代里,如果论坛里里常见最火爆的帖子无疑是:php是世界上最好的编程语言.由此可 ...