废话不多说,直接上代码
int a = 123;
string s = to_string(a); // 将整数a转换为字符表示形式,s = "123"
double d = stod(s); // 将字符串转换为浮点数
注意: 要转换为数值的string中第一个非空白符必须是树脂中可能出现的字符。
string s = "PI = 3.14";
pi 的值为3.14
double pi = stod(s.substr(s.find_first_of("+-.0123456789")));
在stod调用中,我们调用了find_first_of来获得第一个可能是数值一部分的字符的位置。我们将s中从此位置开始的子串传递给stod。stod函数读取此参数处理其中的字符,直至遇到不可能是数值的一部分的字符。然后就将它找到的这一部分的字符串转换为对应的双精度浮点值。
string参数中第一个非空白符必须是符号(+或者-)或者数字。他可以是0X或者0x开头来表示的十六进制数。对于那些将字符串转换为浮点数的函数,string参数也可以以“.”开头,并可以包含e或者E来表示指数部分。
对于那些将字符串转换为整数的函数,根据基数不同,string参数可以包含字母字符,对应大于数字9的数。
注意: 如果string不能转换为一个数值,这些函数跑出一个invalid_argument异常。如果转换得到的数值无法使用任何类型来表示,则抛出一个out_of_range异常
to_string(val | 一组重载函数,返回数值val的string表示。val可以是任何的算数类型。 |
---|---|
stoi(s, p, b) | 返回s的起始子串的数值,返回类型是int型 |
stol(s, p, b) | 返回s的起始子串的数值,返回类型是long int型 |
stoul(s, p, b) | 返回s的起始子串的数值,返回类型是unsigned long int型 |
stoll(s, p, b) | 返回s的起始子串的数值,返回类型是long long int型 |
stoull(s, p, b) | 返回s的起始子串的数值,返回类型是unsigned long long int型 |
stof(s, p) | 返回s的起始子串的数值,返回类型是float型 |
stod(s, p) | 返回s的起始子串的数值,返回类型是double型 |
stold(s, p) | 返回s的起始子串的数值,返回类型是long double型 |