MFC中常用类型变量之间的转换

一、CString转其它类型

//CString转ULONGLONG
CString str;
ULONGLONG nvalue=_atoi64(str);

//CString或者char数组或者char* 转int
CString str; //或char str[10]; //或者char* str;
int nvalue5=atoi(str);

//CString或者char数组或者char* 转long
CString str; 或char str[10]; //或者char* str;
long nvalue5=atol(str);

//Cstring转化为DWORD
CString strdWord=“FFF9AA1D”; DWORD dwWord=_tcstoul(strdWord,NULL,16); // 16进制 还可以是2、8、10进制
CString strdWord=“124572112121”; DWORD dwWord=_tcstoul(strdWord,NULL,10);

//CString转char数组
char k[10];
CString str;
strcpy_s(k,str);

二、char数组和char* 与其他类型的转换

//char数组或char* 转unsigned long
char k[10];
unsigned long k=strtoul(k,NULL,2); //转换为2进制
unsigned long k=strtoul(k,NULL,16); //转换为16进制

//char数组或char* 转long
char k[10];
long k=strtol(k,NULL,2); //转换为2进制
long k=strtol(k,NULL,16); //转换为16进制

//int型转char数组
int i=10;
char temp[20];
itoa(i,temp,10); //将i转换为字符串放入temp中,10表示十进制
itoa(i,temp,2); //按二进制方式转换

//long型转char数组
long k=100;
char temp[20];
ltoa(k,temp,10); //将K转换为字符串放入temp中,10表示十进制
itoa(k,temp,2); //按二进制方式转换

//浮点数(float,double)转char*
int decimal, sign;
char *buffer;
double t = 3.1415926535;
buffer = _fcvt( t, 7, &decimal, &sign ); //7为取原值t的小数点后面7位
运行结果:
t: 3.1415926535
buffer: ‘31415927’ //转换后的值
decimal: 1 //原值t的小数点位置
sign: 0 //原值t的符号,0为正数,1为负数

三、其它数据类型转换到CString
使用CString的成员函数Format来转换,例如:

//整数(int)
int i;
str.Format(“%d”,i);

//浮点数(float)
float j;
str.Format(“%f”,j);

//char*和char数组可以直接赋值
char tem[10];
CString str=tem;
char t[]=“123”;
str = t;

//补充Format函数的其它说明
先看看Format用于转换的格式字符:
%c 单个字符
%d 十进制整数(int)
%ld 十进制整数(long)
%f 十进制浮点数(float)
%lf 十进制浮点数(double)
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数 (%2X为大写的16进制数,2表示数据宽度为2位 )
例子:
CString str;
double num=1.46;
str.Format(_T(“%.1lf”),num); //str=“1.5”(.1表示小数点后留1位,小数点后超过1位则四舍五入)

str.Format(_T(“%7.4lf”),num); //str=" 1.4600"(前面有1个空格),7为字符宽度,表示转换后的结果有7个字符,不够前面补空格

其他的几个类似
itoa—integer to ASCII–将整形转换成字符串
atof—ascii to float–字符串转换成浮点型

atol—ascii to long—字符串转换成长整形

gcvt—浮点型转换成字符串(四舍五入)

strtod—字符串转换成浮点型

strtol—字符串转换成长整形

strtoul–字符串转换成无符号长整形

toascii—将整形转换成合法的ASCII码字符

_ttoi—可以将CString转换成整形

_itot_s—将int转换成char*

CWnd * pWnd = (CWnd*)GetDlgItem(IDC_EDIT4) ;
CString strValue ;
pWnd->GetWindowText(strValue) ;
strValue.Replace(_T(“sec”), _T(“”)) ;
int iValue = _ttoi(strValue) ;//将Cstring转换成int
TCHAR buffer[7] ;
_itot_s(iValue, buffer, 3, 10) ;//将int转换成char*
strValue.Format(_T(“%s”)) ;//将char*转换成CString
strValue = strValue + _T(“sec”) ;//CString实现字符串相加

CString转string 例子:
CString strMfc = “test”;
std::string strStr;
strStr = strMfc.GetBuffer();

string转CString 例子:
CString strMfc;
string strStr = “test”;
strMfc = strStr.c_str();

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值