原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【整理】C++ string转int,string转double,string转long,int转string,double转string…
C++开发中,经常遇到各种基本类型与string的转换,掌握本博文,便可以轻松应对C++各基本类型与string的转换(比如:
...)。
第一种:基于C++ 11标准:
如果你用的编译器是基于最新的C++11标准,那么这个问题就变的很简单,因为
标准库中定义了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
输出结果:
-
5
-
3.140000
-
123234567
-
97
-
a
-
123
-
123
-
123.257
-
123.257
第二种:C++ 11标准之前:
C++11标准之前没有提供相应的方法可以调用,就得自己写转换方法了,代码如下:
从其它类型转换为string,定义一个模板类的方法。
从string转换为其它类型,定义多个重载函数。
-
#include
-
template
-
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.5
-
125
-
3.14159
-
convert from
string to other type:
-
12
-
12.5
-
1234567