【发布时间】:2011-01-03 08:13:06
【问题描述】:
我想将 std::string 转换为 std::wstring。我遇到了两种方法。
给定一个字符串 str,我们无法使用以下代码将其转换为宽字符串 wstring 宽字符串 = std::wstring(str.begin(),str.end());
另一种方法是使用 MultiByteToWideCharArray()。
我想了解的是使用第一种方法的缺点是什么以及第二种方法如何解决事物问题
【问题讨论】:
标签: c++
我想将 std::string 转换为 std::wstring。我遇到了两种方法。
给定一个字符串 str,我们无法使用以下代码将其转换为宽字符串 wstring 宽字符串 = std::wstring(str.begin(),str.end());
另一种方法是使用 MultiByteToWideCharArray()。
我想了解的是使用第一种方法的缺点是什么以及第二种方法如何解决事物问题
【问题讨论】:
标签: c++
MultiByteToWideChar 提供更多选项(例如选择“代码页”的能力)并正确翻译非标准符号
【讨论】:
第一个选项不支持多字节编码。它将遍历字符串中的每个字节 (char) 并将其转换为宽字符。当你有一个多字节编码的字符串时,单个字符可以占用多个字节,因此标准的字符串迭代器是不合适的。
MultiByteToWideChar 函数支持不同的多字节格式,由 codepage 参数指定。
【讨论】: