我得到 argv 作为 wchar_t**(见下文),因为我需要使用 unicode,但我需要将它转换为 char **。我该怎么做?
int wmain(int argc, wchar_t** argv)
{
最佳答案
有不止一种方法可以做到这一点。根据您的环境和可用的编译器/标准库/其他库,您至少有三种选择:
- 使用 std::locale 和 std::codecvt<> 方面;
- 使用 C 语言环境函数,如 std::mbstowcs();
- 使用第 3 方函数,例如 *nix 上的 iconv() 或 Windows 上的 WideCharToMultiByte()。
您真的需要进行转换吗?
您应该意识到,通常(尤其是在 Windows 上)从 wchar_t 字符串到 char 字符串的转换是一种有损转换。系统对char字符串使用的字符集往往不是UTF-8。例如。如果您将带有国家字符或某些亚洲语言的文件名转换为 char 字符串,您很可能会得到一些无法真正用于访问原始文件的内容。
关于c++ - 如何将 wchar_t** 转换为 char**?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227270/