一、简介

<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. dead code 死代码 无作用的代码

               DatasetVector datasetvector=(DatasetVector)dataset;           if (datasetvector == null) ...

  2. Filezilla配置FTP中的坑以及出坑办法

    做本科生助教,老板让配置一个FTP传资料交作业,找了一台Windows服务器捣鼓,开始按网上教程自己配置特别麻烦,何西西说用Filezilla比较方便,就去Filezilla官网下载了Filezill ...

  3. Warning: The Copy Bundle Resources build phase contains

    在编译程序时,遇到了这样的Waring:   Warning: The Copy Bundle Resources build phase contains this target's Info.pl ...

  4. Untiy PoolManager随手记

    用法,1是获取,2是清除, 问题是这个池到底能做什么用 首先用这个池生成的对象是在池节点下使用,而不是取出来用(可以取出来用,直接transform.parent赋值就可以) 疑问,池里面的节点时什么 ...

  5. 《C#入门经典》学习笔记(集合、比较和转换)

    http://xiang-ai-2002.blog.163.com/blog/static/8477933201041824429161/ 集合 C#中的数组是作为System.Array类的实例来执 ...

  6. C++函数调用过程深入分析

    http://blog.csdn.net/dongtingzhizi/article/details/6680050 0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一 ...

  7. PJzhang:互联网是有国界

    猫宁!!! 参考链接:https://mp.weixin.qq.com/s/NFgps_5HBpl3ZjDoR5w8XA 上世纪90年代,互联网开始崛起,美国凭借超级大国的地位,先进技术优势,以美国公 ...

  8. 测试 | 代码覆盖测试工具 | Eclemma

    安装: 打开eclipse,点击Help菜单下的Install New Software 在弹出的对话框中,点击Add 输入Name,如EclEmma 输入Location: http://updat ...

  9. Tinghua Data Mining 7

    SVM B分割得更加无偏 比较公平 卡着分界面的点叫支持向量,就好比托着分界面 支持向量决定了可移动的范围,这个范围就叫margin 分界面可移动的距离 前提是先要被分对 对偶问题一般是不等价的,但是 ...

  10. centOS+uwsgi+nginx 部署flask项目,问题记录

    用flask做的项目想要部署到centOS系统上,填了一些坑,终于成功了,记录一下遇到的问题: 此次部署主要是按照这个博客进行的 https://www.cnblogs.com/Ray-liang/p ...