一、用streanstream(c++的)
数据多的时候可能有点慢,不过很好用
1、 string—>数字(int、float、double)
string str = "123";
int num;
stringstream ss;
ss << str;
ss >> num;
cout << num << endl;
2、数字—>string
int num = 32.123;
string str;
stringstream ss;
ss << num;
ss >> str; //cout << ss.str() endl;一样的效果
cout << str;
二、用sprintf()和sscanf()(c语言的)
1、 char类型的字符串—>数字
char str[]="123456";
int num;
sscanf(str,"%d",&num);//这里切换类型即可
cout << num << endl;
2、数字—>char类型的字符串
char str[10];
int num = 123465;
sprintf(str,"%d",num); //想改变其他的只需改变这的类型
cout << str;
注意:在使用的时候这里也可以直接转换进制
如:
//实例1
char str[]="171";
int num;
sscanf(str,"%x",&num);
cout << num << endl;//转为了16进制
//实例2
char str[]="AB";
int num;
sscanf(str,"%x",&num);//16进制转为10进制,171
cout << num << endl;
三、用itoa和atoi(c语言的)
1.char类型的字符串—>数字
- atof():将字符串转换为双精度浮点型值。
- atoi():将字符串转换为整型值。
- atol():将字符串转换为长整型值。
- strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
- strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
- strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
例:
char str[]="171";
int num = atoi(str);
cout << num << endl;
2、数字—>char类型的字符串
- itoa():将整型值转换为字符串。
- ltoa():将长整型值转换为字符串。
- ultoa():将无符号长整型值转换为字符串。
- gcvt():将浮点型数转换为字符串,取四舍五入。
- ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
- fcvt():指定位数为转换精度,其余同ecvt()。
例:
函数原型:char *itoa(int value, char *string, int radix);
value为输入整数,string为输出转换的字符串,radix 为以几进制输出
int num = 23;
char str[10];
itoa(num,str,10);
cout << str;
四、c++的string和c的char*之间的转换
1.char—>string
char p[20] = "Hello World!";
string str(p);
cout << str;
2.string—> const char*
string str="Hello World";
const char *c = str.c_str();
cout << c << endl;
3.const char*—> char*
const char* tmp = "Hello World";
char* p = const_cast<char*>(tmp);
cout << p << endl;
4.char*—> const char*
char* p = "Hello World";
const char* temp = p;
cout << temp << endl;