CString-->float、int、double
在MFC中可以采用CString内置的函数Format实现,形式如下
CString destination; destination.Format(_T("%??"),source); %c 单个字符 %d 十进制整数(int) %ld 十进制整数(long) %f 十进制浮点数(float) %lf 十进制浮点数(double) %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数
example(其他转换类似)CString str; int number=15; str.Format(_T("%d"),number); //str="15" str.Format(_T("%4d"),number); //str=" 15"(前面有两个空格) str.Format(_T("%.4d"),number); //str="0015"
float、int、double-->CString
短整型(int) i = atoi(temp)
长整型(long) l = atol(temp)
浮点(double) d = atof(temp)
example
CString temp= "100"; int intResult; intResult= atoi(temp);
float、int、double-->字符串
短整型(int) str = itoa(i,temp,10);
长整型(long) str = ltoa(l,temp,10);
10表示安装10进制转换
CString-->字符串指针
看了一下这个转换有好多争论,主要是这个写法
CSting cstr; 将其转换为字符串指针写成 (LPSTR)(LPCTSTR)cstr另一种写法是CString str; CStringA strA(str); strA.GetString();或strA.GetBuffer(0);个人比较喜欢后面这种,比较清楚,MFC的宏用起来很不顺。。。。
CString与内置类型的转换总结如下:
转换类型 | 转换方法 | 注意事项 |
CString 转char | char *p = (LPSTR)(LPCTSTR)cstr; | |
CString 转char* | char * charpoint; charpoint = cstr; | |
CString 转int/float | 可以使用 atoi 、_atoi64 或 atol | |
CString 转string | string s(CString.GetBuffer()); | GetBuffer() 后一定要ReleaseBuffer() |
string 转CString | CString.format(”%s”, string.c_str()); | |
string 转char* | char *p = string.c_str(); | |
string 转char | char p = string.c_str(); | |
char 转CString | CString.format(”%s”, char*); | |
char 转string | string s(char *); | |
char 转int/float | 强制转换 | |
int/float 转CString | s.Format(”%d”, i) | |
int/float 转char | 强制转化 | |
CString 转char[100] | char a[100];CString str(”aaaaaa”);strncpy(a,(LPCTSTR)str,sizeof(a)); | |
char* 转CString | CString.Format(”%s”,char *); |