c++的数字转string:
to_string需要c++11支持
函数原型:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
例:
int main()
{
string pi = "pi is " + std::to_string(3.1415926);
string perfect = to_string(1 + 2 + 4 + 7 + 14) + " is a perfect number";
cout << pi << endl;
cout << perfect << endl;
return 0;
}
输出结果:
c++的string转数字(多接口):
stoi(s,p,b) 把字符串s从p开始转换成b进制的int
stol(s,p,b) 把字符串s从p开始转换成b进制的long
stoul(s,p,b) 把字符串s从p开始转换成b进制的unsigned long
stoll(s,p,b) 把字符串s从p开始转换成b进制的long long
stoull(s,p,b) 把字符串s从p开始转换成b进制的unsigned long long
stof(s,p) 把字符串s从p开始转换成float
stod(s,p) 把字符串s从p开始转换成double
stold(s,p) 把字符串s从p开始转换成long double
例:
int main()
{
string strs = "22413.456";
cout << stoi(strs, 0, 10) << endl;
cout << stol(strs, 0, 10) << endl;
cout << stof(strs, 0) << endl;
cout << stod(strs, 0) << endl;
return 0;
}
输出结果:
C语言char *转数字:
需要头文件#include<stdlib.h>
int atoi(const char *str) 将字符串str转为整数
double strtod(const char *str, char **endptr)
功能:C 库函数 double strtod(const char *str, char **endptr) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。如果 endptr 不为空,则指向转换中最后一个字符后的字符的指针会存储在 endptr 引用的位置。
参数:
- str 需要转换的字符串
- endptr 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符
例:
int main()
{
int val;
char str[20];
strcpy(str, "98993489");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n", str, val);
strcpy(str, "runoob.com");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n", str, val);
strcpy(str, "123.456");
printf("字符串值:%s, double类型值:%lf\n", str, strtod(str, NULL));
char str1[30] = "20.30300 This is test";
char *ptr;
double ret;
ret = strtod(str1, &ptr);
printf("数字(double)是 %lf\n", ret);
printf("字符串部分是 |%s|\n", ptr);
return 0;
}
输出结果:
C语言数字转char *
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。
● itoa():将整型值转换为字符串。(大部分编译器不支持)
char* itoa(int value,char*string,int radix);//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数,如2,8,10,16 进制等。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
char *gcvt(double number, size_t ndigits, char *buf);
功 能: 把一个浮点数转换为字符串
用 法: char *fcvt(double value, int ndigit, int *decpt, int *sign);
参数:
value:要转换的浮点数,输入参数
ndigit:小数点后面的位数,输入参数
decpt:表示小数点的位置,输出参数
sign:表示符号,0为正数,1为负数,输出参数
● fcvt():指定位数为转换精度,其余同ecvt()。
int main()
{
char *string;
double value;
int dec, sign;
int ndig = 10;
value = 9.876;
string = ecvt(value, ndig, &dec, &sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
value = -123.45;
ndig= 15; //总共输出多少位
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n",string, dec, sign);
value = 0.6789e5; /* scientificnotation */
ndig = 5;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
return 0;
}