如何将 wchar_t** 转换为 char**?

2024-01-07

我得到 argv 作为 wchar_t** (见下文),因为我需要使用 unicode,但我需要将其转换为 char **。我怎样才能做到这一点?

int wmain(int argc, wchar_t** argv) 
{ 

有不止一种方法可以做到这一点。根据您的环境和可用的编译器/标准库/其他库,您至少有三种选择:

  1. 使用 std::locale 和 std::codecvt 方面;
  2. 使用 C 语言环境函数,例如 std::mbstowcs();
  3. 使用第 3 方函数,例如 *nix 上的 iconv() 或 Windows 上的 WideCharToMultiByte()。

您真的需要进行转换吗?

您应该意识到,通常(尤其是在 Windows 上)从 wchar_t 字符串到 char 字符串的转换是有损转换。系统对字符串使用的字符集通常不是UTF-8。例如。如果您将带有国家字符或某些亚洲语言的文件名转换为字符字符串,您很可能会得到一些无法真正用于访问原始文件的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 wchar_t** 转换为 char**? 的相关文章

随机推荐