小女子编写C++程序时遇到一个关于Format函数的错误,不知道该怎么修改,希望各位高手帮忙指教!

这段程序的代码是这样的:LONGCPortDlg::OnRecvSerialData(WPARAMwParam,LPARAMlParam){CStringstrRecv;... 这段程序的代码是这样的:
LONG CPortDlg::OnRecvSerialData(WPARAM wParam,LPARAM lParam)
{
CString strRecv ;
strRecv.Format("%x", wParam);//接收十六进制数
m_strEditReceiveMsg += strRecv;
UpdateData(FALSE); //将接收到的字符显示在接收编辑框中
return 0;
}
m_strEditReceiveMsg 是在之前定义过的

build时有一个错误:
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [3]' to 'const wchar_t *'

Format这个函数用错了么?里面的参数应该写什么呢?
希望高手帮我看一下,不胜感激!
展开
 我来答
Mr94Fei
2012-05-02 · TA获得超过192个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:210万
展开全部
strRecv.Format(L"%x", wParam);
在使用%x或者%X时,后面的wParam需要确保是一个整型值,而不是一个字符串.
另外,如果你已经确定了的话.把你的代码改成
strRecv.Format(L"%x", wParam);
就好使了.
百度网友7eff2e0
2012-04-26 · TA获得超过1043个赞
知道小有建树答主
回答量:787
采纳率:80%
帮助的人:539万
展开全部
CString::Format的定义是:
void Format( LPCTSTR lpszFormat, ... );
再看LPCTSTR定义是“An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.”
再从你的错误信息中有'const wchar_t *',所以估计你在编译时定义了UNICODE,(每个字符占两字节)
首先查下你的代码里有没有#define _UNICODE,如果有,删了,或改为_MBCS
然后看一下你的集成开发环境里(比如VC6)有没有定义_UNICODE
对于VC,是在project settings对话框里的c/c++下,看看有没有,(你应该能看到WIN32,_WINDOWS等等)有就改为_MBCS

如果你必须要用UNICODE。。。 你就把Format的参数"%x"改为Unicode的吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户bd40f
2012-05-18 · TA获得超过5.3万个赞
知道小有建树答主
回答量:2.5万
采纳率:0%
帮助的人:1721万
展开全部
喂~ “小女子”,你就不想知道为什么加个L就能编译过了?!枉费了给你分析了半天错误信息。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式