我想将std :: string转换为std :: wstring。我遇到过两种方法。
鉴于字符串str,我们无法使用以下代码转换为宽字符串 wstring widestring = std :: wstring(str.begin(),str.end());
另一种方法是使用MultiByteToWideCharArray()。
我想了解的是使用第一种方法的缺点是什么,以及第二种方法如何解决问题
答案 0 :(得分:4)
MultiByteToWideChar提供更多选项(例如选择“codepages”的能力)并正确翻译非标准符号
答案 1 :(得分:4)
第一个选项不支持多字节编码。它将迭代字符串中的每个字节(char
)并将其转换为宽字符。如果您有一个具有多字节编码的字符串,则单个字符可能需要多个字节,因此标准字符串迭代器不合适。
MultiByteToWideChar
函数支持不同的多字节格式,由codepage参数指定。