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

来源:互联网 发布:淘宝客服是干嘛的? 编辑:程序博客网 时间:2024/05/19 14:56

首先要引入两个文件

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


0 0
原创粉丝点击