为什么要使用MultiByteToWideCharArray将std::string转换为std::wstring?

3
我想把一个std::string转换成std::wstring。有两种方法可以使用。
  1. 给定一个字符串str,我们可以使用以下代码将其转换为宽字符串: wstring widestring = std::wstring(str.begin(), str.end());

  2. 另一种方法是使用MultiByteToWideCharArray()。

我想了解的是第一种方法的缺点,以及第二种方法是如何解决这个问题的。
2个回答

4

MultiByteToWideChar提供更多选项(如选择“代码页”)并正确翻译非标准符号。


4

第一个选项不支持多字节编码。它将迭代字符串中的每个字节(char)并将其转换为宽字符。当您有一个具有多字节编码的字符串时,单个字符可能需要多个字节,因此标准字符串迭代器不适用。

MultiByteToWideChar函数支持不同的多字节格式,由代码页参数指定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接