我知道通常你不需要wchar_t
来支持通用代码的unicode,但是,Windows API似乎具有与所有采用字符串的方法相当的ASCII或宽字符。例如:
FindWindowA(nullptr, "File Explorer"); // ASCII version
FindWindowW(nullptr, L"File Explorer"); // Wide Character version
我使用Visual Studio 2017
中的以下选项Properties > General
进行编译:
Character Set: Use Unicode Character Set
另一个可用选项是:Use Multi-Byte Character Set
。
我希望能够支持带有unicode字符的文件名,我不确定是否应该使用multi-byte
字符集进行编译并使用所有宽字符方法,或者我是否应该使用{{进行编译1}}字符集并使用所有ASCII方法。
答案 0 :(得分:6)
我不确定是否应该使用多字节字符集进行编译 并使用所有宽字符方法,或者我应该编译 unicode字符集并使用所有ASCII方法。
wchar_t
。char
的函数的“A”版本。MultiByteToWideChar(CP_ACP)
加宽它们的输入参数,调用它们的“W”对应物,最后使用“W”对应物将结果转换回多字节WideCharToMultiByte(CP_ACP)
。因此,我建议您使用函数的“W”版本,假设您正在编写Windows NT及更高版本。
在Win32 API的上下文中,Microsoft的“Unicode”通常是指UTF-16。 此外,Microsoft的MBCS本质上是DBCS,对于Windows 9x操作系统,缺少功能的“W”版本。