一、简介

<sstream>类库定义了三种类:istringstream,ostringstream,stringstream.分别用来进行流的输入,流的输出,输入输出操作.在此演示stringstream的使用.**stringstream最大的特点是可以很方便的实现各种数据类型的转换,不需要像C语言中转换那么麻烦,而且转换非常安全.所以stringstream经常用于方便安全的类型转换.

二、用法

(1)数据的分割(string --> string)

 #include<stdio.h>
#include<iostream>
#include<sstream>
using namespace std; string str[]; int main()
{
string line;
int cnt = ;
while (getline(cin, line)) //每次取一行
{
stringstream ss(line); //将字符串根据空格分隔成一个个单词
while (ss >> str[cnt])
{
cout << str[cnt++] << " ";
}
}
return ;
}

(2)数据的拼接

 #include<stdio.h>
#include<iostream>
#include<sstream>
using namespace std; int main()
{
stringstream ss;
int num1 = ;
int num2 = ;
string str2 = "abc";
string str;
ss << num1;
ss << num2;
ss << str2;
ss >> str;
cout << str; //可以不同类型拼接,输出123456789abc return ;
}

(3)数据类型的转换

 #include<stdio.h>
#include<iostream>
#include<sstream>
using namespace std; template<class T>
void Tostring(string &result, const T &t) //用模板将各种数值转化成string类型
{
stringstream ss;
ss << t;
ss >> result;
} int main()
{
stringstream ss;
string str;
string str2 = "1122334455a123";
int num1 = ;
float num2 = 3.1415926;
char arr[]; Tostring(str, num2);
cout << str << endl; ss.clear();
ss.str(""); //在另外一篇blog有解释
ss << num1;
ss >> str;
cout << str << endl; //int --> string,输出12345 ss.clear();
ss.str("");
ss << num2;
ss >> str;
cout << str << endl; //float --> string,输出3.14159,好像小数点5位之后的会丢掉 ss.clear();
ss.str("");
ss << str2;
ss >> num1; //string --> int,输出1122334455,遇到非数字会停止
cout << num1 << endl; ss.clear();
ss.str("");
ss << str2;
ss >> num2; //string --> float,输出1122334455,遇到非数字也会停止
cout << num1 << endl; ss.clear();
ss.str("");
ss << str2;
ss >> arr; //string --> char*,输出1 3,转换成其他类型数组不行
cout << arr[] <<" "<< arr[] << endl; return ;
}

stringstream类的简介和用法的更多相关文章

  1. c++之stringstream类的用法

    简介: 今天利用opecv提取每一帧图片并保存到本地指定目录下的时,对于保存的每一帧的图片希望第几帧体现在图片名中, 这里便用到了stringstream类的将数字转化为字符串这一功能 C++ Str ...

  2. istringstream、ostringstream、stringstream 类简介

    本文系转载,原文链接:http://www.cnblogs.com/gamesky/archive/2013/01/09/2852356.html ,如有侵权,请联系我:534624117@qq.co ...

  3. sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇(十五)

    Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...

  4. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  5. Cwinux简介及用法简述

    我在我的个人博客上发表了一篇文章 Cwinux简介及用法简述 http://apprentice89.com/cwinux_introduction_and_use/

  6. oc-12-NSString 类简单介绍及用法

    // 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...

  7. istringstream、ostringstream、stringstream 类介绍 .

    istringstream.ostringstream.stringstream 类介绍 . 转自:http://www.cnblogs.com/gamesky/archive/2013/01/09/ ...

  8. 18、面向对象基本原则及UML类图简介

    18.1.面向对象基本原则 18.1.1.面向抽象原则 抽象类特点: a.抽象类中可以有abstract方法,也可以有非abstract方法. b.抽象类不能用new运算符创建对象. c.如果一个非抽 ...

  9. InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)

      上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢?   测试代码 p ...

随机推荐

  1. flex设置默认字体为微软雅黑

    必须使用英文名称 Microsoft YaHei 否则有些系统不识别

  2. E20190226-hm

    shallow  adj. 浅的,肤浅的; 表面的,皮毛的; (水,器物等) 浅的; (呼吸) 浅的;  n. 浅处; 浅滩;

  3. C++里的强制类型转换符reinterpret_cast、static_cast 、dynamic_cast、const_cast 区别

    C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的 ...

  4. ThinkPHP3.2.3学习笔记6---专题---数据分页

    http://document.thinkphp.cn/manual_3_2.html#data_page thinkphp3.2.3中分类的功能调用的文件$THINKPHP_HOME/ThinkPH ...

  5. 剑指OFFER之二叉树的镜像(九度OJ1521)

    题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的 ...

  6. vant搜索框问题

    最近使用vant搜索框时发现,当输入内容点击一次搜索有数据,点击错号把内容去掉再点击搜索,都没进入点击搜索方法. 解决方法:把bindtop改成bindtouchstart <van-searc ...

  7. 关于web常见的安全问题

    一. Web攻击动机: 1.恶作剧: 2.关闭Web站点,拒绝正常服务: 3.篡改Web网页,损害企业名誉; 4.免费浏览收费内容; 5.盗窃用户隐私信息,例如手机号.Email等个人信息; 6.以用 ...

  8. Mybatis中分页存在的坑1

    站在巨人的肩膀上 https://www.cnblogs.com/esileme/p/7565184.html 环境:Spring 4.2.1 Mybatis 3.2.8 pagehelper 5.1 ...

  9. (转)linux du命令

    转自 http://www.cnblogs.com/peida/archive/2012/12/10/2810755.html Linux du命令也是查看使用空间的,但是与df命令不同的是Linux ...

  10. 码云最火爆开源项目 TOP 50,你都用过哪些?

    前 20 名预览 排名软件排名软件 1zheng11AOSuite 2JFinal12Spiderman 3t-io13AG-Admin 4guns14renren-security 5hutool1 ...