有个 WCHAR string[] = L"测试";怎样把 CString 的字符串转换到 WCHAR string[]?
解决方案 »
- 用VC和sql server 2000做一個B/S架構的小型管理系統?
- windows编程 窗口类属性和窗口对象属性有什么区别?
- event message 有什么区别?
- 在VIEW类中调用CTREECTRL类的方法,运行时出错,帮帮我啊
- 怎么获得通过ADO访问数据库得到数据集的所有记录数?谢谢!!!
- 可知每个线程的时间片是多少?
- Api Hook能拦截DSound.dll(DirectSound)中有关音频播放的操作么?
- 急求<<COM技术内幕>>随书光盘
- 不要再没有响应!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 在vc中如何实现对静态文本的鼠标点击事件的处理?
- 【显式调用DLL】GetProcAddress如何放到公共类中定义?
- 我在做SOCKET连接,有点问题,想请教一下?
如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为char,即8位字符类型。在UNICODE方式下,CString对象由16位字符组成。非UNICODE方式下,CString对象由8位字符组成。当不使用_UNICODE时,CString是多字节字符集(MBCS,也被认为是双字节字符集,DBCS)。注意,对于MBCS字符串,CString仍然基于8位字符来计算,返回,以及处理字符串,并且你的应用程序必须自己解释MBCS的开始和结束字节。
/////////////////////////
所以两者是不需要转换的,不知你怎么会出现需要转换的情况??
难道你在非UNICODE的情况下要转换成wchar_t?那就要2楼所用的函数
MultiByteToWideChar
CString s("123");
wchar_t *w;
int l; l = MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)s, -1, NULL, 0);
w = new wchar_t[l];
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)s, -1, w, l);
delete []w;