MFC中CString与int、float、Char*的转换

一、引言:
处理数据时,我们经常要用MessageBox来查看具体的数值,Debug处理时,也需要把数据转化为字符串类型数据后,才可以正常输出到Log文件中,从UI控件接收的字符串也需要转化为具体的数据后,才能在程序中进行运算处理。因此,字符串与数据间的相互转换在实际的编程过程中经常用到。

二、转化实例

     1,CString  --> int

            CString     cStr("5678");
            int  i  =  _ttoi( cStr );
           在ANSI 和 UNICODE 都可以用的代码

      2,int   --> CString

           int       i   =  123;
           CString      cStr ;
           cStr.Format(   _T("%d"),   i   );

      3,float   --> CString

           float       f  =  123.456;
           CString      cStr ;
           cStr.Format(   _T("%f"),   f    );


      4,char*   --> CString

           CString     cStr;
           char     buffer[100];
           cStr.Format(  _T("%s"),  buffer  );
           或者cStr  =   buffer;

      5,CString   --> char*

           CString     cStr;
           char     buffer[100];
           int    i;
           for( i=0;  i < cStr.GetLength();  i++ )
           {
                 buffer[ i ]=(char)( str.GetAt( i ) );
           }
           buffer[i]='\0';
--------------------- 
       6,CString   ---->double
       
			CString szPort = L"2589.00";
			double nPort = _ttol(szPort);
			或
			atof()

在MFC程序中,可以使用Format方法方便的实现int、float和double等数字类型转换为CString字符串。以下是CString的Format支持的格式说明:

%c 单个字符
%d 十进制整数(int)
%ld 十进制整数(long)
%f 十进制浮点数(float)
%lf 十进制浮点数(double)
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数

1、int转换为CString

CString str;
int number=15;

//str="15"
str.Format(_T("%d"),number);

//str=" 15"(前面有两个空格;4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)
str.Format(_T("%4d"),number);

//str="0015"(.4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)
str.Format(_T("%.4d"),number);



long转换为CString的方法与上面相似,只需要把%d改为%ld就可以了。

2、double转换为CString

CString str;
double num=1.46;

//str="1.46"
str.Format(_T("%lf"),num);

//str="1.5"(.1表示小数点后留1位,小数点后超过1位则四舍五入)
str.Format(_T("%.1lf"),num);

//str="1.4600"
str.Format(_T("%.4f"),num);

//str=" 1.4600"(前面有1个空格)
str.Format(_T("%7.4f"),num);

float转换为CString的方法也同上面相似,将lf%改为f%就可以了。

3.CString转化为double型

CString ss="123.21";

double dd=atof(ss);

4.CString转化为int型

CString str = "123";
int i = _ttoi(str);//转为64位int类型的话可以使用_ttoi64()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BeanGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值