< 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. Linux几个小杂碎点(更新中)

    1 BIOS时间和系统时间问题 安装完CentOS后,系统时间是CST时间,而BIOS时间是UTC时间,因此系统时间会比BIOS时间快8个小时.如果您设置BIOS自动开机的话,就会总是差个8小时.需要 ...

  2. 远程服务调用(RMI)

    模块概念的引入,是本框架的一大优势,而跨JVM的远程服务调用则是另一个最有价值的功能. <本地服务调用>一文中我们讲解了跨模块间的服务调用可以是这样的: ServiceHelper.inv ...

  3. linux 安装icu库

     先下载源码包并解压 然后安装 cd /icu/source ./configure --prefix=/usr/local/icu gmake make install  

  4. mac对比class文件

    下载反编译工具 wget https://varaneckas.com/jad/jad158g.mac.intel.zip 设置Beyond Compare 填写编译工具路径

  5. C语言预处理 编译 汇编 链接四个阶段

    c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接. 编译过程 编译过程又可以分成两个阶段:编译和会汇编. 编译 编译是读取源程序(字符流),对之进行词法和语法的分析,将高 ...

  6. MonogoDB 练习一

    1.解析文件,仅处理 FIELDS 字典中作为键的字段,并返回清理后的值字典列表 需求: 1.根据 FIELDS 字典中的映射更改字典的键 2.删掉"rdf-schema#label&quo ...

  7. js、jQuery实现2048小游戏

    2048小游戏 一.游戏简介:  2048是一款休闲益智类的数字叠加小游戏 二. 游戏玩法: 在4*4的16宫格中,您可以选择上.下.左.右四个方向进行操作,数字会按方向移动,相邻的两个数字相同就会合 ...

  8. Java8之Lambda表达式基础

    Java 8中,将会提供对lambda的支持,函数式编程FP(Functional Programming)将会得到很好地支持,而函数式编程的一个重要特点就是适合并行运算. λ:希腊字母表中排序第十一 ...

  9. Python基础篇(五)

    bool用于判断布尔值的结果是True还是False >>> bool("a") True >>> bool(3) True >>& ...

  10. BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]

    题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d| ...