是否可以在visual studio 2010项目中使用多个“字符集”?

时间:2015-11-14 18:42:15

标签: c++ visual-studio visual-studio-2010 unicode

如您所知,在visual studio 2010(c ++)中,我们有noset,unicode和MBCS字符集,我们可以通过菜单或预处理器指令(如#define _UNICODE)来设置它。    我正在开发一个项目,它有一个使用MBCS characterset来生成信息的文件(实际上它解析了一个html文件!),项目中的其他文件通过unicode字符集来支持assian语言。我通过为文件添加#define _MBCS和为主文件添加#define _UNICODE来测试它,但是收到了一些编译器错误。    现在有没有解决这个问题?

1 个答案:

答案 0 :(得分:1)

LPCTSTR是指向TCHAR(字符串)的指针。它映射到LPWSTR(宽字符串)或LPCSTR(ansi字符串),具体取决于_UNICODEUNICODE定义是否已设置。所有这些TCHAR的东西都是Windows 9x时代的延续,当时早期版本的Windows在其API中没有Unicode支持,但开发人员希望针对NT和9x进行编译。所有这一切现在都应该被弃用。

我的建议 - 在使用ANSI与UNICODE字符串时,摆脱所有TCHAR代码并明确。

  1. 将所有项目设置转换为Unicode。

  2. 显式转换所有LPTSTR,LPCTSTR,TCHAR,变量,LPWSTR,LPCWSTR或WCHAR。或者在显式处理ANSI字符串时:LPSTR(char *),LPCSTR(const char *)或CHAR(char)。

  3. 在调用Win32 API时要明确。使用" A"要处理ANSI字符串时的API版本(例如CreateWindowA与CreateWindowW)。

  4. MultiByteToWideStringWideStringToMultiByte是您的朋友。