如您所知,在visual studio 2010(c ++)中,我们有noset,unicode和MBCS字符集,我们可以通过菜单或预处理器指令(如#define _UNICODE)来设置它。 我正在开发一个项目,它有一个使用MBCS characterset来生成信息的文件(实际上它解析了一个html文件!),项目中的其他文件通过unicode字符集来支持assian语言。我通过为文件添加#define _MBCS和为主文件添加#define _UNICODE来测试它,但是收到了一些编译器错误。 现在有没有解决这个问题?
答案 0 :(得分:1)
LPCTSTR是指向TCHAR(字符串)的指针。它映射到LPWSTR(宽字符串)或LPCSTR(ansi字符串),具体取决于_UNICODE
或UNICODE
定义是否已设置。所有这些TCHAR的东西都是Windows 9x时代的延续,当时早期版本的Windows在其API中没有Unicode支持,但开发人员希望针对NT和9x进行编译。所有这一切现在都应该被弃用。
我的建议 - 在使用ANSI与UNICODE字符串时,摆脱所有TCHAR代码并明确。
将所有项目设置转换为Unicode。
显式转换所有LPTSTR,LPCTSTR,TCHAR,变量,LPWSTR,LPCWSTR或WCHAR。或者在显式处理ANSI字符串时:LPSTR(char *),LPCSTR(const char *)或CHAR(char)。
在调用Win32 API时要明确。使用" A"要处理ANSI字符串时的API版本(例如CreateWindowA与CreateWindowW)。