【整理】C++ string转int,string转double,string转long,int转string,double转string…

来源:互联网 发布:linux 查看raid卡型号 编辑:程序博客网 时间:2024/04/30 06:47

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【整理】C++ string转int,string转double,string转long,int转string,double转string…

C++开发中,经常遇到各种基本类型与string的转换,掌握本博文,便可以轻松应对C++各基本类型与string的转换(比如:

int转string,double转string,long转string,string转int,string转double,string转long

...)。

第一种:基于C++ 11标准:

基于C++11标准

如果你用的编译器是基于最新的C++11标准,那么这个问题就变的很简单,因为<string>中已经封装好了对应的转换方法:

标准库中定义了to_string(val);可以将其它类型转换为string。还定义了一组stoi(s,p,b)、stol(s,p,b)、stod(s,p,b)等转换函数,可以函数,可以分别转化成int、long、double等.

   stoi(s,p,b);stol(s,p,b);stoul(s,p,b);stoll(s,p,b);stoull(s,p,b); 返回s的起始子串(表示整数内容的字符串)的数值,返回值的类型分别为:int、long、unsigned long、long long、unsigned long long.其中b表示转换所用的基数,默认为10(表示十进制).p是size_t的指针,用来保存s中第一个非数值字符的下标,p默认为0,即函数不返 回下标.

   stof(s, p); stod(s, p); stold(s, p); 返回s的起始子串(表示浮点数内容)的数值,返回值的类型分别是float、double、long double.参数p的作用与整数转换函数中的一样。

voidtestTypeConvert(){    //int --> string    inti = 5;    string s = to_string(i);    cout << s << endl;    //double --> string    doubled = 3.14;    cout << to_string(d) << endl;    //long --> string    longl = 123234567;    cout << to_string(l) << endl;    //char --> string    charc = 'a';    cout << to_string(c) << endl;   //自动转换成int类型的参数    //char --> string    string cStr; cStr += c;    cout << cStr << endl;      s = "123.257";    //string --> int;    cout << stoi(s) << endl;    //string --> int    cout << stol(s) << endl;    //string --> float    cout << stof(s) << endl;    //string --> doubel    cout << stod(s) << endl;}


第一种方法记得编译的时候加上支持C++ 11的参数:-std=c++0x

输出结果:

53.14000012323456797a123123123.257123.257


第二种:C++ 11标准之前:

C++11标准之前

C++11标准之前没有提供相应的方法可以调用,就得自己写转换方法了,代码如下:

从其它类型转换为string,定义一个模板类的方法。

从string转换为其它类型,定义多个重载函数。

#include <strstream>template<classT>string convertToString(constT val){    string s;    std::strstream ss;    ss << val;    ss >> s;    returns;}  intconvertStringToInt(conststring &s){    intval;    std::strstream ss;    ss << s;    ss >> val;    returnval;} doubleconvertStringToDouble(conststring &s){    doubleval;    std::strstream ss;    ss << s;    ss >> val;    returnval;} longconvertStringToLong(conststring &s){    longval;    std::strstream ss;    ss << s;    ss >> val;    returnval;} voidtestConvert(){    //convert other type to string    cout << "convert other type to string:" << endl;    string s = convertToString(44.5);    cout << s << endl;    intii = 125;    cout << convertToString(ii) << endl;    doubledd = 3.1415926;    cout << convertToString(dd) << endl;     //convert from string to other type    cout << "convert from string to other type:" << endl;    inti = convertStringToInt("12.5");    cout << i << endl;    doubled = convertStringToDouble("12.5");    cout << d << endl;    longl = convertStringToLong("1234567");    cout << l << endl;}


结果如下:

convert other type to string:44.51253.14159convert from string to other type:1212.51234567


0 0
原创粉丝点击