欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

欧卡2入门方向盘选莱仕达V9莱仕达折叠便携游戏方向盘支架欢迎地图Mod入驻
查看: 6320|回复: 2
收起左侧

[编程] “void ATL::CStringT<BaseType,StringTraits>::Format

[复制链接]
知行 发表于 2013-4-5 01:28 | 显示全部楼层 |阅读模式
error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *”

with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

相关帖子

 楼主| 知行 发表于 2013-4-5 01:28 | 显示全部楼层
你用的是VC2005或者更高的版本吧?
VC2005及更高版本默认使用Unicode字符集,CString里存的是宽字符,也就是wchar_t,而不再是char。你可以这么写:
strDate.Format(_T("%4d-%2d-%2d"),st.wYear,st.wMonth,st.wDay);
strTime.Format(_T("%4d:%2d:%2d"),st.wHour,st.wMinute,st.wSecond);
以后写程序的时候,定义字符串变量,不要用char*,而用TCHAR*。所有字符串常量,不要直接用"",而要用_T("")。举个例子:
TCHAR* str = _T( "Hello, World" );
MessageBox( _T( "Hello" ));
当然,我上面说的是在MFC里面。写控制台程序的话,就不用了。

参见:http://zhidao.baidu.com/question/403165096.html
 楼主| 知行 发表于 2013-4-5 01:33 | 显示全部楼层
原始:
void CLx2Dlg::ShowMsg()
{
        char buf[255];
        m_recv.Receive(buf, 255);                        //接收消息到buf里面,长度255字节。
        CString msg;
        msg.Format("%s", buf);                        //用AfxMessageBox函数显示接收到的字符窜。
        AfxMessageBox(msg);                                //这里注意CString类的用法
}
修改后:
void CChat_serverDlg::ShowMsg()
{
        TCHAR buf[255];
        m_recv.Receive(buf,255);                        //接收消息到buf里面,长度255字节。
        CString _T(msg);
        _T(msg).Format(_T("%s"),buf);                        //用AfxMessageBox函数显示接收到的字符窜。
        AfxMessageBox(_T(msg));                                //这里注意CString类的用法
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2024-11-25 13:33 , Processed in 0.043236 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表