将char *转换为Unicode std :: string

时间:2014-03-19 07:02:01

标签: c++ unicode ascii std

我已编程多年但对std命名空间和std::string类非常新。

我正在编写代码来读取Gdiplus::PropertyItem::value的值char *

将此char *值转换为string的最常用方法是什么,在我的情况下是一个Unicode字符串?

1 个答案:

答案 0 :(得分:4)

您提到的是string,但您说它是一个Unicode字符串。那么我想你的意思是wstring。您可以使用MultiByteToWideChar函数在两者之间进行转换。像这样:

std::string str(...);
int size = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstr(size, 0 );
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstr[0], size);