如您所知,在 Visual Studio 2010(c++) 中,我们有 noset、unicode 和 MBCS 字符集,我们可以通过菜单或预处理器指令(如 #define _UNICODE)来设置它。
我正在开发一个项目,它有一个使用 MBCS 字符集来生成信息的文件(实际上它解析一个 html 文件!),项目中的其他文件通过 unicode 字符集工作以支持亚洲语言。我通过为文件添加 #define _MBCS 和为主文件添加 #define _UNICODE 对其进行了测试,但收到了一些编译器错误。
现在有办法解决这个问题吗?
LPCTSTR 是指向 TCHAR(字符串)的指针。它映射到 LPWSTR(宽字符字符串)或 LPCSTR(ansi 字符串),具体取决于_UNICODE
or UNICODE
定义已设置。所有这些 TCHAR 内容都是 Windows 9x 时代的遗留物,当时 Windows 的早期版本在其 API 中没有 Unicode 支持,但开发人员希望针对 NT 和 9x 进行编译。所有这些现在都应该被废弃了。
我的建议 - 摆脱所有 TCHAR 代码,并在使用 ANSI 与 UNICODE 字符串时明确显示。
将所有项目设置转换为 Unicode。
将所有 LPTSTR、LPCTSTR、TCHAR 变量显式转换为显式 LPWSTR、LPCWSTR 或 WCHAR。或者显式处理 ANSI 字符串时:LPSTR (char*)、LPCSTR (const char*) 或 CHAR (char)。
调用 Win32 API 时要明确。当您想要处理 ANSI 字符串时,请使用 API 的“A”版本(例如 CreateWindowA 与 CreateWindowW)。
多字节到宽字符串 https://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85).aspx and 宽字符串到多字节 https://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx是你的朋友。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)