一、引言:
处理数据时,我们经常要用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()