< sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。

对象声明方式

stringstream ss;

使用方法

stringstream ss;
int n=0;
char s[]="123456";
ss<<s;
ss>>n;  //n=123456,n发生改变

重复使用stringstream对象

stringstream对象的构造和析构函数通常是非常耗费CPU时间的,重复使用stringstream对象可以提高程序的效率。但是重复利用前需要调用clear()函数,否则会出错。

stringstream对象的特点功能

在我看来stringstream对象的强大之处在于它对于字符串的分割,在一个字符串中包含空格的时候,使用stringstream可以很方便的分割成为多个字符串。

举例

char s[100]="jdfhufgh fjhg lkj dd";
char temp[100];
stringstream ss(s);
while(ss>>temp)
cout<<temp<<' ';

输出:jdfhufgh fjhg lkj dd

从以上代码可以看出,原字符串s被截断成4个字符串,是很方便的。当然有人会问了有了截断,必然会有字符串连接。当然,字符串连接的话请使用string类对象。

其实sprintf()也能实现字符类型转换,但是sprintf使用起来容易出错,这里就不加赘述了。

对sprintf想了解更多请点击sprintf详解

stringstream测试代码

#include<iostream>
#include<sstream>
using namespace std;
int main()
{
    stringstream st;
    char s[40]="123646 35456 6546";
    char s1[40];
    int x;
    st<<s;
    while(st>>x)
    {
    cout<<x<<endl;
    }

    //对象重用
    st.clear();
    string str1="jfhgf6454 646 6465 fgkjfhi";
    string str2="";
    st<<str1;
    while(st>>str2)
    {
        cout<<str2<<endl;
    }
    return 0;
}

如有不当之处欢迎指出!!

使用stringstream对象简化类型转换的更多相关文章

  1. C++中使用stringstream简化类型转换

    C++标准库中的<sstream>提供了一个stringstream,以前基本没用过,突然发现很好用(^-^)V 参见 http://www.cplusplus.com/reference ...

  2. C#开发中使用配置文件对象简化配置的本地保存

    C#开发中使用配置文件对象简化配置的本地保存 0x00 起因 程序的核心是数据和逻辑,开发过程中免不了要对操作的数据进行设置,而有些数据在程序执行过程中被用户或程序做出的修改是应该保存下来的,这样程序 ...

  3. 《挑战30天C++入门极限》C++中利用构造函数与无名对象简化运算符重载函数

        C++中利用构造函数与无名对象简化运算符重载函数 在完整描述思想之前,我们先看一下如下的例子,这个例子中的加运算符重载是以非成员函数的方式出现的: //程序作者:管宁  //站点:www.cn ...

  4. 对象的类型转换P109

    类作为一种应用数据类型,和基本数据类型的变量一样.不同类中存在对象与对象之间的类型转问题,对象的类型转换只能在  具有继承关系的 父类对象-----子类对象 之间进行   子类通常比父类拥有更多的域和 ...

  5. Java知多少(33)多态对象的类型转换

    这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. ...

  6. 四. Java继承和多态6. 多态对象的类型转换

    这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. ...

  7. 《Java基础知识》Java多态对象的类型转换

    这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. ...

  8. C# 4 dynamic 动态对象 动态类型转换

    public class User { //使用省缺参数,一般不需要再为多态做各种静态重载了 public User( string name = "anonym", string ...

  9. C++ stringstream(强制类型转换)

    #include <iostream>#include <string>#include <sstream>using namespace std;int main ...

随机推荐

  1. 前后端分离之CORS和WebApi

    目前的项目是前端mv*+api的方式进行开发的,以前都是没有跨域的方案,前后端人员在同一个解决方案里边进行开发,前端人员要用IIS或VS来开发和调试Api,这样就很不方便,迫切需要跨域访问Api. 评 ...

  2. Shader 入门笔记(一)

    本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的s ...

  3. Zabbix系统数据采集方法总结

    转:http://www.blog.chinaunix.net/uid-9411004-id-4115731.html 老文章,直接拿来用了,官网也有最新分类,没高兴翻译 在Zabbix系统中有多达十 ...

  4. iOS项目——基本框架搭建

    项目开发过程中,在完成iOS项目——项目开发环境搭建之后,我们首先需要考虑的就是我们的项目的整体框架与导航架构设计,然后在这个基础上考虑功能模块的完成. 一 导航架构设计 一款App的导航架构设计应该 ...

  5. strcpy和memcpy

    切记,memcpy的头文件是memory.hstrcpy和memcpy主要有以下3方面的区别.1.复制的内容不同.strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组.整型.结构体 ...

  6. Java并发系列[4]----AbstractQueuedSynchronizer源码分析之条件队列

    通过前面三篇的分析,我们深入了解了AbstractQueuedSynchronizer的内部结构和一些设计理念,知道了AbstractQueuedSynchronizer内部维护了一个同步状态和两个排 ...

  7. 3.移植驱动到3.4内核-移植DM9000C驱动

    在上章-使内核支持烧写yaffs2,裁剪内核并制作补丁了 本章,便开始移植以前2.6内核的驱动到3.4新内核 1.介绍 首先内核更新,有可能会重新定义新的宏,去除以前的宏,以前更改函数名等 所以移植驱 ...

  8. SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

    sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...

  9. 04_Python Data Structures

    Python数据结构 数据结构:数据个体的存储 和 数据个体与个体之间关系的存储. Python中有:1.序列 2.映射类型 3.无序集合 序列:成员有序排列.通过下标偏移量进行访问.元组.字符串.列 ...

  10. MySQL修改密码的三种方法

      MySQL修改密码的三种方法 1.方法1: 2.方法2: 3.方法3: