C++中int、string、const char*、CString之间的相互转换

1.int与string的相互转化

使用stringstream即可
stringstream可以吞下不同的类型,根据b的类型,然后吐出不同的类型。

//#include

int a=80;
stringstream ss;
ss<string str = ss.str();
cout<//80

int b;
ss >> b;
cout << b << endl; // 30

2.string与const char*的相互转化

(1)string转const char*
通过string类的c_str()函数能够把string对象转换成c中的字符串的样式,且返回有”\0“的字符串数组,而.data()则返回没有”\0“的字符串数组

string s1 = "abcdeg";
const char *k = s1.c_str();
cout<

注:c_str函数的返回值是const char*的,不能直接赋值给char*
(2)const char*转string
直接赋值即可

const char* s1 ="abc";
string s(s1);

3.string与char*的相互转化

(1)string转char*
用string的一个成员函数copy来实现

string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;

(2)char*转string

char* c ="abc";
string s(c);

4.int与char*的相互转化

(1)int转char*

使用itoa

//char *itoa( int value, char *string,int radix);
 // value:欲转换的数据。
 // string:目标字符串的地址。
 // radix:转换后的进制数,可以是10进制、16进制等。
 // 返回指向string这个字符串的指针

    int aa = 80;
    char c[8];
    _itoa(aa, c, 10);
    cout << c << endl; // 80

补充:

  • ltoa():将长整型值转换为字符串。

使用sprintf

 int n = 100;
 char t[10];
 sprintf(t, "%d", n);
 cout<

(2)char*转int

int a; //转换的目标变量。
char c = '7'; //要转换的字符。
a = c - '0'; 

使用atoi函数

//#include 
char str[]="1234";
int a=atoi(str);

补充:

  • atof():将字符串转换为双精度浮点型值。
  • atol():将字符串转换为长整型值。

5.String与CString的相互转化

const char*类型可以直接给CString类型赋值,例如:

const char* c="hello"
CString cstr=c;

CString类型变量可以直接给string类型变量赋值,但是string类型不能对CString类型直接赋值.因此若要将string转化为CString可先将string类型变量转换为const char*类型,然后再直接赋值就可以了

CString cstr;
string str="abcdefg";
cstr = str.c_str();

CString转换为const char*的方法如下:
先转为String类型,再利用.c_str()转换为const char*

CString cstr="abcdefg"
string str = cstr;
const char* c = srt.c_str();

6.CString与int的相互转化

int a,b=4,c=5;
CSting  cstr1=_T("abc"),cstr2;

a=_ttoi(cstr1);
cstr2.Format(_T("%d"),c);

你可能感兴趣的:(C++)