cannot convert from 'wchar_t *' to 'ATL::CStringT ‘s solution
2008-04-17 10:09
519 查看
今天编译一个CButtonST类时发生了这个错误。主要是Unicode的问题。针对这个问题,由于编程习惯问题,我们在编程时可能不注意unicode和ansi的处理。这里有几个建议:
1.在VC中尽量采用CString 去代替 char 等。不要为了显示你的高超编程技巧给后期维护带来麻烦
2.字符串前不妨养成 加— _T()的习惯
3.多了解和掌握关于字符串处理的知识,我这方面也只是知其源但不太知其所以然。不过从执行来说,用unicode编译执行速度会快,因为如果用ansi 其实底层还是做了一次转换为unicode的过程。
在写字符串处理时,不妨绷紧这根线,时时不要忘记这个问题。
我试了几个方式,例如加L等,最终这么解决的 CString junk=CString(TEXT(OptionText));
有人好像这样解决过CString pathw = static_cast<CString>(wszNewStr); 未验证
MSDN上这里有比较详细的例子,不妨看看 http://msdn2.microsoft.com/en-us/library/ms235631(VS.80).aspx
1.在VC中尽量采用CString 去代替 char 等。不要为了显示你的高超编程技巧给后期维护带来麻烦
2.字符串前不妨养成 加— _T()的习惯
3.多了解和掌握关于字符串处理的知识,我这方面也只是知其源但不太知其所以然。不过从执行来说,用unicode编译执行速度会快,因为如果用ansi 其实底层还是做了一次转换为unicode的过程。
在写字符串处理时,不妨绷紧这根线,时时不要忘记这个问题。
我试了几个方式,例如加L等,最终这么解决的 CString junk=CString(TEXT(OptionText));
有人好像这样解决过CString pathw = static_cast<CString>(wszNewStr); 未验证
MSDN上这里有比较详细的例子,不妨看看 http://msdn2.microsoft.com/en-us/library/ms235631(VS.80).aspx
相关文章推荐
- cannot convert from 'wchar_t *' to 'ATL::CStringT ‘s solution
- cannot convert parameter 1 from 'TCHAR [260]' to 'WCHAR *'
- cannot convert from 'const int' to 'const char *'
- error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to 'LRESUL
- LoadCursorA' : cannot convert parameter 2 from 'const int' to 'const char *
- cannot convert from 'const char [n]' to 'LPCWSTR'2009
- error C2664: 'RtCreateTimer' : cannot convert parameter 3 from 'int (void *)' to 'void (__stdcall *)(void *)'问题解决办法
- error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
- VC++ 出现错误:cannot convert from const char *' to 'LPCWSTR' 或者'const char [7]' to 'LPCWSTR' 的解决方法
- VC错误之_cannot convert parameter 2 from 'const char [12]' to 'LPCWSTR'
- cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'char *' to 'LPCTSTR'的解决方法
- 报错 error C2664: 'CreateWindowExA' : cannot convert parameter 2 from 'unsigned short [10]' to 'const char *'
- vc++控件变量SetDlgItemText(): cannot convert parameter 1 from 'char [10]' to ‘
- 用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall
- error C2440: 'static_cast' : cannot convert from 'void (__thiscall MenuToolBar::* )(LPARAM,LRESULT *)' to 'void (__thiscall CCmd
- FAQ: Cannot convert from 'const char [..]' to 'LPCTSTR'
- error:error C2664: 'calc' : cannot convert parameter 2 from 'int' to 'int []' Conversion fro
- java的JDBC连接mysql数据库时对于Datetime类型出现Cannot convert value '0000-00-00 00:00:00' from column 9 to TIMESTAMP.
- 错误 1 error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char [17]' to 'LPCTST