菜鸟提问:关于VS2005中CString::Format()的使用

qqwwing 2006-02-22 04:08:50
前两天图新鲜下了个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的朋友指点一下。谢谢。
...全文
238 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
whwjn 2006-03-26
  • 打赏
  • 举报
回复
amrk
qqwwing 2006-02-22
  • 打赏
  • 举报
回复
又仔细对比了一下VS2005打开2003建的工作区的设置和2005自己建的工作区的设置,发现在工作区的常规设置里有一项 字符集 的设置,2005生成的工作区里,这项默认设置是使用Unicode字符集,把它改成 使用多字节字符集 ,str.Format("%d",i)这样的写法就可以用了。

结贴,谢谢回复的朋友。收分
kugou123 2006-02-22
  • 打赏
  • 举报
回复
看看编译选项里面有没有 UNICODE ,改为MBCS应该可以了
kugou123 2006-02-22
  • 打赏
  • 举报
回复
UNICODE问题
handsomerun 2006-02-22
  • 打赏
  • 举报
回复
没用过vs2005

不过看那个出错信息,偶估计是因为vs2005是用unicode编译的,

所以出那样的错误
qqwwing 2006-02-22
  • 打赏
  • 举报
回复
谢谢楼上朋友,是不是2005里只能这么写。那为什么我用2005打开2003建立的工程,进行编绎又没有问题呢?只是2005自已建立的工程里会出错。我在想是不是2005里有一些关于对于前面版本程序的兼容性设置。还有连MSDN里的例子也出这样的错,真是搞不懂
handsomerun 2006-02-22
  • 打赏
  • 举报
回复
str.Format(_T("%d"),i);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧