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

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

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

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

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

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

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

整型转换为字符串类型input

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

字符创类型转换为整型it

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>库还提供了另一个特性—可扩展性,你能够经过重载来支持自定义类型间的转换,下次在探究

相关文章
相关标签/搜索