很多时候一些格式需要以日志的形式打印出来,就需要转成CString. 那么就需要用到Format
1. DWORD
DWORD a2=276321234;
CString str2;
str2.Format(_T("%u"),a2);
2. char[ ]
如果工程时Unicode编码,有三种方法:
char *pChar = "liuxijiao计算机网络";
char bb[]=("你好");
USES_CONVERSION;
CString stre = A2T(bb); //方法一
CString strd = A2W(pChar); //方法二
//方法三:
char pszFileName[NAME_LEN];
wchar_t Temp[NAME_LEN];
MultiByteToWideChar(CP_ACP, 0, pszFileName, strlen(pszFileName) + 1, Temp,sizeof(Temp));
3. TCHAR
TCHAR a[]=_T("this is a test");
CString str;
str.Format(_T("%s"), a);
4. char*
//方法一
char *pChar = "liuxijiao计算机网络";
USES_CONVERSION;
CString str = A2T(pChar);
//方法二
char *pChar = "liuxijiao计算机网络";
USES_CONVERSION;
CString str = A2W(pChar);
5. %x(十六进制数)
使用printf(“%x”,…);可以输出指定参数的16进制形式,但是在实际的使用中,参数不一定都是32位的整数,有可能是16位的short,8位的char。这个时候不小心就会输出错误的结果。正确写法应该带上每个参数的类型:
CString strGUID;
strGUID.Format(_T("%01x%01x%02x%02x%02x%04x%04x%04x%04x%04x%08x"),
(char)ullVersion, (char)nViewNum, (short)nScanMode, (short)nBitCount, (short)nDeinterlaceType, (int)ullEditWidth, (int)ullEditHeight,
(int)ullFrameRate, (int)width_ratio, (int)height_ratio, (ULONGLONG)lsum);
strGUID.MakeUpper();
6. %llx(64位数格式化为十六进制数)
7. 其他
%c 单个字符
%d 十进制整数(int)
%ld 十进制整数(long)
%f 十进制浮点数(float)
%lf 十进制浮点数(double)
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数