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

时间:2011-01-03 08:13:06

标签: c++

我想将std :: string转换为std :: wstring。我遇到过两种方法。

  1. 鉴于字符串str,我们无法使用以下代码转换为宽字符串 wstring widestring = std :: wstring(str.begin(),str.end());

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

  3. 我想了解的是使用第一种方法的缺点是什么,以及第二种方法如何解决问题

2 个答案:

答案 0 :(得分:4)

MultiByteToWideChar提供更多选项(例如选择“codepages”的能力)并正确翻译非标准符号

答案 1 :(得分:4)

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

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