本文主要借鉴了文章:string,CString,char*之间的转化,并在该文的基础上进行整理。有兴趣的朋友可以看一下原文。
- string,CString,char*之间的转化
int
int 转 CString:
CString.Format(“%d”,int);int 转 char *
在stdlib.h中有个函数itoa()
itoa的用法:
itoa(i,num,10);
i 需要转换成字符的数字
num 转换后保存字符的变量
10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
原形:char itoa(int value, char string, int radix);
实例:<#include "stdlib.h"
<#include "stdio.h"
main()
{
int i=1234;
char s[5];
itoa(i,s,10);
printf("%s",s);
getchar();
}int转String
方法一:
stringstream ss;
int n = 123;
string str;
ss<<n;
ss>>str;
方法二:同int转char,只是后面加了一步。
char *_itoa( int value, char *string, int radix );
char buffer[20];
int i = 3445;
_itoa( i, buffer, 10 );
string s(buffer);
String
- string 转 CString
CString.format(“%s”, string.c_str());
用c_str()确实比data()要好. - string 转 char
代码
char *p = string.c_str();
string aa("aaa");
char *c=aa.c_str();
string mngName;
char t[200];
memset(t,0,200);
strcpy(t,mngName.c_str()); - string 转 int
方法借鉴string转char 和 char转int,即可。
str = "456";
int n = atoi(str.c_str());
- string 转 CString
char
char* 转 CString
方法一: CString.format(“%s”, char*);
方法二:
CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint; //直接赋值char* 转 int
#include <stdlib.h>
int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);char* 转 string
string s(char *); //只能初始化,在不是初始化的地方最好还是用assign(). string s1( "Mississippi" ); char *s3; // 拷贝s1 的前4 个字符 s3.assign( s1, 0, 4 );
CString
- CString 转 int
CString ss=”1212.12”;
int temp=atoi(ss); //atoi _atoi64或atol
将字符转换为整数,可以使用atoi、_atoi64或atol。
int int_chage = atoi((lpcstr)ss) ;
或:
CString str = "23";
UINT uint;
sscanf(str, "%d", uint); - CString 转 string
string s(CString.GetBuffer());
//GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
CString 转char
CString cstr; char *p = (LPSTR)(LPCTSTR)cstr;
- CString 转 int