我有一个 OLECHAR* 并且我想将它转换为 CHAR* 以便从中创建字符串,但我没有找到一种方法。
OLECHAR 是常规字符吗?没有它的想法。
在此先感谢,加尔。
OLECHAR
是一串wchar_t
字符。我推荐阅读The Complete Guide to C++ Strings, Part II - String Wrapper Classes。
OLECHAR*
是一个 Unicode (UTF-16)wchar_t
字符串。如果要将其转换为CHAR*
字符串,则必须阐明要用于转换的特定编码。
例如,您可能希望从 UTF-16 转换为 UTF-8(这是一种无损转换),并且可以将 UTF-8 字符串存储在char*
/中std::string
(我更喜欢使用健壮的字符串类而不是 C++ 中的原始指针代码)。
要执行转换,您可以使用WideCharToMultiByte()
Win32 API。CP_UTF8
如果要从 UTF-16 转换为 UTF-8,可以使用“代码页”值。对于(可能有损的)“ANSI”转换,您可以使用CP_ACP
等。
(上述 Win32 API也有方便的 ATL 包装器CW2A
,例如,但我不确定这些包装器的 VC6 版本中可用的功能级别。)