天天看点

c++中int,string,char类型的相互转换

首先要引入两个文件

#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位;