菜鸟提问:关于VS2005中CString::Format()的使用
前两天图新鲜下了个VS.net2005,装完后简单试了一下,结果发现从前编的小程序在2005里居然出来一大堆错误,仔细一瞅发现都是CString::Format()这个函数出错。比如:
CString str;
int i=9;
str.Format("%d",i);
这在6.0和.net2003里都没有问题,我从前一直都是这么写的。但在2005中,第三句会出错,出错信息为:
e:\覃柯\设计\8.0\mfctest\mfctest\mfctestdlg.cpp(158) : error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [15]' to 'const wchar_t *'
看上去好像是说"%d"这种写法有误,我觉得很奇怪,格式化字符串,怎么会错。我装的2005的MSDN不太会用,没有搜到相关的说明,只有一个例子,下载下来运行,发现那个例子居然也出错,出错信息是一样的。例子里面相关语句也是这样写的
fmt.Format("Save image failed:\n%x - %s", hResult, _com_error(hResult).ErrorMessage());
照样出错,怪了。
我试着把原来的写法改成 str.Format(_T("%d"),i);这下子编译通过了,能用。但是为什么原来的写法不能用。是2005设置的问题还是以后如str.Format("%d",i);的写法是不是都不可以用了。请用过2005的朋友指点一下。谢谢。