C++数值与字符串转换

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream头文件。
istringstream类用于执行C风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C++风格的串流的输入输出操作。

下图详细描述了几种类之间的继承关系:
C++数值与字符串转换_第1张图片
简单的str和num(int类型)转换直接可以用stringstream类来实现,代码如下:

#include 
#include 
string num2str(double i)             //数字转字符串
{
    stringstream ss;
    ss<return ss.str();
}

int str2num(string s)                //字符串转数字
{
    int num;
    stringstream ss(s);
    ss>>num;
    return num;
}

也可以使用ostringstream将字符串转换为数值

#include 
#include 
#include 
using namespace std;

template<class T>
inline string toString(const T &v){
    ostringstream os;                           //创建字符串输入流
    os<//将变量v的值写入字符串流
    return os.str();                            //返回输出流生成的字符串
}

int main(){
    string str1=toString(5);
    cout<string str2=toString(1.2);
    cout<return 0;
}

运行结果:
C++数值与字符串转换_第2张图片

接着利用istringstream将字符串转换为数值

#include 
#include 
#include 
using namespace std;

template<class T>
inline T fromString(const string &str){
    istringstream is(str);                   //创建字符串输入流
    T v;                                     
    is>>v;                                   //从字符串输入流中读取变量v
    return v;                                //返回变量v
}

int main(){
    int v1=fromString<int>("5");
    cout<double v2=fromString<double>("1.2");
    cout<return 0;
}

运行结果:

C++数值与字符串转换_第3张图片

你可能感兴趣的:(c/c++语言学习)