int和string以及char *和string的互相转换

来源:互联网 发布:淘宝怎么投诉药店 编辑:程序博客网 时间:2024/06/02 21:40

注:由于我们经常要用到int和string类型间的转换,且容易搞混,现在我把他们的转换方法整理一下,供大家参考。

Int转换为string 

1).to_string()方法:

int b = 4415;string a = to_string(b)+to_string(5851);  //添加#inlcude <string>头文件

2).stringstream方法:

string a;stringstream ss;   //加头文件#include <sstream>ss<<121;ss >> a;

3).itoa()方法:

int number = 12345;char string[25];_itoa_s(number, string, 10); //第一个参数是整形变量,第二个数是字符串指针,第三个参数是第一个参数的进制表示;vs2013中要用_itoa_s(),用itoa()或_itoa()会报错;


string转换为int

1).atoi()方法:

char *str = "12345.67";char s1[] = "454144";string s2="454548";int i = atoi(str);   //参数是字符指针int j = atoi(s1);  int k = atoi(s2.c_str());  //c_str()返回const char *类型;

2). stringstream方法:

int a;string s="8145";stringstream ss;  //添加#include <sstream>头文件ss<<s;  ss>>a;


char *转换为string

方法一:

string str=”123456”;char *p=(char*)str.c_str();char *q=(char*)str.data();

方法二:

string s=”123456”;Int len=s.size()+1;char *p=new char[len];char *q=new char[len];strcpy_s(p,len,s.c_str());  //最后一个用来存放’\0’;strcpy_s(q,len,s.data());  

方法三:

string s=”1323456”;char p[20];copy(p,5,0);   //5表示复制几个字符,0代表复制的位置;*(p+5)=’\0’;


char*转换为string

方法一:

char* s="123456";string str=s;
方法二:

char s[20]=”123456”;string str=s;


char和int相互转化

标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。char类型的字符在计算机中就是用ASCII码表示的,int和char之间可以相互转化的。

1).char类型‘0’~‘9’转化为int类型0~9

char a=8+'0';     //a='8'
2).int类型0~9转化为char类型‘0’~‘9'
int a='8'-'0'; //a=8

同理可以在int类型0~9和char类型‘a’~'j'之间相互转化,很方便的技巧。