VC++中CString.Format函数的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++中CString.Format函数的问题相关的知识,希望对你有一定的参考价值。

CString ss;
LONG a, b, c, d;

ss.Format("(%d,%d,%d,%d)",a,b,c,d);

怎么编译器会报错啊,说:
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [14]' to 'const wchar_t *'
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

我试过把%d换成&i,%f,%l,都不行。
希望高手指点!

你当初创建程序的时候选择的不是MFC应用程序,而是ATL(活动模板库)程序,这两个库是不同的,所以才能看到ATL::这个提示。重新创建项目就可以了。 参考技术A 应该是%ld吧,和C不大一样,如果你的机器配置不是待烂,建议用VC.NET 2003 查一下MSDN 参考技术B 你的编译选项可能选择了Unicode的形式,你把编译方式选择为“Win32 Release”就可以了。应该是这个样子; 参考技术C 怀疑,我在6.0和2003下试了都没问题 参考技术D 省略号是指参数个数不确定,s就是String字符串z是指用0结尾的字符串

CString.Format

Cstring str;

str.Format("%d",num);

d输出带符号十进制数 
o输出无符号八进制数 
x输出无符号十六进制数 
u输出无符号数 
c输出单个字符 
s输出一串字符 
f输出实数(6位小数) 
e以指数形式输出实数 
g选用f与e格式中输出宽度较小的格式,不输出
ld输入输出long型数据 
lf输入输出double型数据 
m数据输出宽度为
.n输出小数位数为

以上是关于VC++中CString.Format函数的问题的主要内容,如果未能解决你的问题,请参考以下文章

给定 %d 时,VC++ 6.0 应用程序在 CString::Format 内崩溃

CString.Format 以相同的精度生成不同的值

CString::Format 的替代方案?

CString.Format汉字问题

VS2010中CString Format 用法

CString.Format