C++标准库中的<sstream>提供了一个stringstream,以前基本没用过,突然发现很好用(^-^)V

参见 http://www.cplusplus.com/reference/sstream/stringstream/

如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法;

在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。

如何用使用stringstream进行类型转换:

1. 下面例子为整型和sting类型的相互转换示例

整型转换为字符串类型

string NumberToString(int num)
{
    stringstream ss;
    ss<<num;   //像流中传值
    string result;
    ss>>result;  //将流中的值写入到result
    return result;
}

字符创类型转换为整型

int StringToNumber(string strNum)
{
    stringstream ss;
    ss<<strNum;
    int result;
    ss>>result;
    return result;
}

编译期就确定了num,result,strNum的类型,调用stringstream的时候拥有足够的信息判断来进行自动转换,并将转换结果缓存到stringstream对象的内部缓冲中

stringstream对象会根据需要自动分配内存,不用担心溢出问题.

例如:

float n = 22.22;
string strNum = "22.22";
cout<<StringToNumber(strNum)<<endl;
cout<<NumberToString(n)<<endl;

输出:22 22

2. 任意类型的转换

template <class output_type,class input_type>
output_type Convert(const input_type &input)
{
    stringstream ss;
    ss<<input;
    output_type result;
    ss>>result;
    return result;
}

例如:

float n = 22.22;
string strNum = "22.22";

float f = Convert<float>(strNum);
cout<<f<<endl;
string ss = Convert<string>(n);
cout<<ss<<endl;

输出: 22.22 22.22

3. 自定义类型的转换

<sstream>库还提供了另外一个特性—可扩展性,你可以通过重载来支持自定义类型间的转换,下次在探究

C++中使用stringstream简化类型转换的更多相关文章

  1. C++中使用stringstream进行类型转换操作

    stringstream包括istringstream和ostringstream,提供读写string的功能,使用时需包含stream文件.4个操作:1. stringstream strm; 创建 ...

  2. 使用 stringstream 进行类型转换

    如何用使用stringstream进行类型转换: 1. 下面例子为整型和sting类型的相互转换示例 整型转换为字符串类型 string NumberToString(int num){    str ...

  3. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  4. sqlserver搜索中怎么把varchar类型转换成numeric类型

    sqlserver搜索中怎么把varchar类型转换成numeric类型 可以用cast来转换 如:列名叫grade,表名为A select cast(grade as numeric(y,x)) f ...

  5. C++中的显式类型转换

    一.学习总结 1.C++中额外提供的类型转换有 (1) reinterpret_cast: 格式:reinterpret_cast<type-id> (expression)①type-i ...

  6. [转载]C++中四种强制类型转换方式

    C++中四种强制类型转换方式 原文地址:http://www.cnblogs.com/home123/p/6763967.html 类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单( ...

  7. 02-JS中的数据类型及类型转换

    02-JS中的数据类型及类型转换 一.数据类型 JS中的值,无论是字面量还是变量,都有明确的类型. (一)概述 1.基本类型5种 number 数字类型 string 字符串类型 boolean 布尔 ...

  8. 使用stringstream对象简化类型转换

    < sstream>库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一个对应的宽 ...

  9. C++ stringstream 简化数据类型转换

    C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性.类型安全和可扩展性. 在C++中经常会使用到snprintf来格式化一些输 ...

随机推荐

  1. jQuery对下拉框、单选框、多选框的处理

    下拉框: //得到下拉菜单的选中项的文本(注意中间有空格) var cc1 = $(".formc select[@name='country'] option[@selected]&quo ...

  2. python之6-5偏函数

    functools.partial 偏函数的作用是简化操作,简化什么操作呢?就是当我们有一个已知函数A,且这个函数包含有某个或多个参数A1,通过固定这个参数A1,我们可以自己编写一个新函数B,来减少代 ...

  3. 网站卡死,照惯例运行.bat批量处理文件进行重启不起作用

    网站卡死,照惯例运行.bat批量处理文件进行重启不起作用,进入虚拟机控制台进行虚拟机重启仍然不起作用,通过ping分析物理服务器能ping通,各个虚拟机之前也能ping通,但是不能ping通外部,分析 ...

  4. 使用POI把Word Excel转为HTML

    此方法是针对Office2003的,但是word中如果有图片,图片能够解析出来但是HTML文件中不显示.也不支持excel中的图片解析. 所需jar包如下如下: 1:PoiUtil.java pack ...

  5. 使用 ExpandableListView 实现折叠ListView

    1:layout/expandablelistview_groups.xml 标题文件 <?xml version="1.0" encoding="utf-8&qu ...

  6. CCI_chapter 8 Recurision

    8.1 水题 8.2 Imagine a robot sitting on the upper left hand corner of an NxN grid The robot can only m ...

  7. QDialog 模态对话框与事件循环(exec其实就是调用了show和eventLoop.exec)

    起源 qtcn中文论坛中有网友问到: 假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体上的事件.当此程序运行到某阶段时,弹出一个模态窗体B(书上 ...

  8. 《iPhone高级编程—使用Mono Touch和.NET/C#》

    第1章 C#开发人员基于MonoTouch进行iPhone开发概述 1 1.1 产品对比 2 1.1.1 .NET Framework 2 1.1.2 Mono 2 1.1.3 MonoTouch 3 ...

  9. Java中的ThreadLocal深入理解

    提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和 ...

  10. 专题笔记--Java 类集框架

    Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...