首先要引入两个文件
#include<sstream>
#include<string>
以下为转换实例:
1.char转换为string
1:)char*型
char* a1 = "123";
string a2(a1);
//cout << a2<<endl;
2)char型
char c[] = "we123";
string str;
stringstream stream;
stream << c;
str = stream.str();
//cout << str <<endl;
2.string转换为char型
1)转换为char
char d[20];
string d1="1234";
strcpy(d,d1.c_str());
cout << d<<endl;
//这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
2)转换为char*
//c_str() 以 char* 形式传回 string 内含字符串
//如果一个函数要求char*参数,可以使用c_str()方法:
string s = "Hello World!";
const char *d2 = s.c_str();
cout << d2<<endl;
3.int(float)转换为string
float a = 1324.5;
string res;
stringstream ss;
ss<<a;
ss>>res;//将float a转换为string res
4.string转换为int(float)
string res="1324.5";
int b;
stringstream ss2;
ss2<<res;
ss2>>b;//将string res转换成int b=1324(如果转为float就是1324.5)
//cout << b<<endl;
5.int和char之间的转换
int转换成char,可以先把int转为string再转为char
char转换为int
char c[] = "123";
int aa;
stringstream stream;
stream << c;
stream >> aa;
cout << aa << endl;
补充说明几点:
关于带符号与无符号类型:整型 int、stort 和 long 都默认为带符号型。要获得无符号型则必须制定该类型为unsigned,比如unsigned long。unsigned int类型可以简写为unsigned,也就是说,unsigned后不加其他类型说明符就意味着是unsigned int。
一字节表示八位,即:1byte = 8 bit;
int: 4byte = 32 bit 有符号signed范围:2^31-1 ~ -2^31即:2147483647 ~ -2147483648无符号unsigned范围:2^32-1 ~ 0即:4294967295 ~ 0
long: 4 byte = 32 bit 同int型
double: 8 byte = 64 bit 范围:1.79769e+308 ~ 2.22507e-308
long double: 12 byte = 96 bit 范围: 1.18973e+4932 ~ 3.3621e-4932
float: 4 byte = 32 bit 范围: 3.40282e+038 ~ 1.17549e-038
int、unsigned、long、unsigned long 、double的数量级最大都只能表示为10亿,即它们表示十进制的位数不超过10个,即可以保存所有9位整数。而short只是能表示5位;