sstream即字符串流.
sstream有三种类:ostringstream:用于输出操作,istringstream:用于输入操作,stringstream:用于输入输出操作
其实我感觉只用第三个就够了-_-||

基本操作:
stringstream buff;
buff.str() 将buff里面的内容当做一个string返回
buff.str("....") 对buff赋值
buff.clear() 清空buff
可以使用流操作符>>和<<, 类比cin,cout.

建议在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象),而在中间使用clear()函数清空.stringstream对象的构造和析构函数通常是非常耗费CPU时间的.

其实sstream最有用的还是在类型转换里面,把string转换成int,float等类型.
来看个例子吧:

 #include <iostream>
#include <sstream>
using namespace std; int main()
{
cout << "Hello world!" << endl; ostringstream buff1;
buff1<<"Sample1 #1";
string st1=buff1.str();
cout<<st1<<endl; istringstream buff2;
buff2.str("Sample2 #2");
string st2="ReWrite2";
//buff2>>st2;
getline(buff2,st2);
cout<<st2<<endl; stringstream buff3;
buff3<<"Sample3 #3";
string st3=buff3.str();
cout<<st3<<endl; buff3.clear();
buff3.str("Sample4 #4");
string st4="ReWirte4";
buff3>>st4;
cout<<st4<<endl; //----------------------------------------------------
cout<<endl;
//---------------------------------------------------- stringstream buff4;
buff4.str("");
int i;
buff4>>i;
cout<<i<<endl; buff4.clear();
buff4.str("233.33");
double j;
buff4>>j;
cout<<j<<endl; return ;
}

line9--12:对buff1赋值,再赋给字符串st1
line21--24:同上,只是改了个类型...

line14--19和line26--30:都是用str()函数给buff赋值,然后写到字符串里.
但是二者存在不同:
14--19使用的getline,会读入一整行(当然包括了空格后面的内容),所以输出了完整的一句.
而26--30是使用的流操作符.类比cin我们不难发现,在buff3>>st4时,buff3空格及后面的内容都被略掉了.

来看运行结果:

当然最有实用价值的还是line36--40和line42--46,分别实现了string->int和string->double的类型转换.

参考:

http://blog.163.com/zhuandi_h/blog/static/180270288201291710222975/
http://blog.sina.com.cn/s/blog_5c8c24a90100emye.html

sstream使用简介的更多相关文章

  1. TcpServer 使用简介

    1.简介 1) Poco 的 TcpServer 是一个多线程的 Tcp 服务器. 服务器使用 ServerSocket(Poco 的一个用于初始化服务器的socket的类) 来接收链接.Server ...

  2. stringstream类的简介和用法

    一.简介 <sstream>类库定义了三种类:istringstream,ostringstream,stringstream.分别用来进行流的输入,流的输出,输入输出操作.在此演示str ...

  3. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  4. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  5. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  6. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  7. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  8. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  9. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

随机推荐

  1. ios更新UI时请尝试使用performSelectorOnMainThread方法

    最近开发项目时发现联网获取到数据后,使用通知方式让列表刷新会存在死机的问题. 经过上网查找很多文章,都建议使用异步更新的方式,可是依然崩溃. 最后尝试使用performSelectorOnMainTh ...

  2. ORACLE 定时执行存储过程

    推荐用dbms_scheduler方式更好 (2012-11-19注) /* 查询: select job,broken,what,interval,t.* from user_jobs t; job ...

  3. sobel算子

    #1,个人理解 网上查了很多资料,都说sobel算子是用来检测边缘的,分别给了两个方向上的卷积核,然后说明做法,就说这就是sobel算子.对于我个人来说,还有很多不明白的地方,所以理清下思路. #2, ...

  4. 一个C++宏定义与枚举定义重复的编译错误

    C++的开发效率低是众所周知的,原因比如有: 语言复杂度高 编译效率低 工具链不够完整高效(尤其是linux下) 另外一个恐怕是不少编译错误让人摸不着头脑,今天碰到一个,举个例子: #include ...

  5. 我在 CSDN 的小窝

    以后有文章,我会同时更新 博客园 和 CSDN. CSDN:http://blog.csdn.net/u010918003

  6. Theano3.3-练习之逻辑回归

    是官网上theano的逻辑回归的练习(http://deeplearning.net/tutorial/logreg.html#logreg)的讲解. Classifying MNIST digits ...

  7. Javascript将构造函数扩展为简单工厂

    一般而言,在Javascript中创建对象时需要使用关键字new(按构造函数去调用),但是某些时候,开发者希望无论new关键字有没有被显式使用,构造函数都可以被正常调用,即构造函数同时还具备简单工厂的 ...

  8. nios II--实验7——数码管IP软件部分

    软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...

  9. 文本溢出省略解决笔记css

    text-overflow:ellipsis; overflow:hidden; white-space:nowrap; *white-space:nowrap;

  10. iOS开发--二维码的生成

    一.需要包含头文件 #import <CoreImage/CoreImage.h> 二.示例代码 -- 以下生成的二维码不够清晰 如图: - (void)touchesBegan:(NSS ...