#include <string>
#include <locale>
#include <codecvt>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
std::string str("\x61\x61\x61\xf0\x9f\x98\xa8\xe4\xb8\xad\xe6\x96\x87");
std::wstring_convert<std::codecvt_utf8<wchar_t> > cvt_utf8;
std::wstring ws = cvt_utf8.from_bytes(str);
wcout << L"size of wchar_t == " << sizeof(wchar_t) << endl;
wcout << L"ws.len == " << ws.length() << endl;
wcout << L"ws: " << ws << endl;
for (int i = 0; i < ws.length(); i++)
{
wcout << L"0x" << hex << (int)ws[i] << L" ";
}
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPGNvZGVjdnQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkgCnsKICAgICAgICBzdGQ6OnN0cmluZyBzdHIoIlx4NjFceDYxXHg2MVx4ZjBceDlmXHg5OFx4YThceGU0XHhiOFx4YWRceGU2XHg5Nlx4ODciKTsKIAogICAgICAgIHN0ZDo6d3N0cmluZ19jb252ZXJ0PHN0ZDo6Y29kZWN2dF91dGY4PHdjaGFyX3Q+ID4gY3Z0X3V0Zjg7CiAgICAgICAgc3RkOjp3c3RyaW5nIHdzID0gY3Z0X3V0ZjguZnJvbV9ieXRlcyhzdHIpOwogCiAgICAgICAgd2NvdXQgPDwgTCJzaXplIG9mIHdjaGFyX3QgPT0gIiA8PCBzaXplb2Yod2NoYXJfdCkgPDwgZW5kbDsKICAgICAgICB3Y291dCA8PCBMIndzLmxlbiA9PSAiIDw8IHdzLmxlbmd0aCgpIDw8IGVuZGw7CiAgICAgICAgd2NvdXQgPDwgTCJ3czogIiA8PCB3cyA8PCBlbmRsOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3MubGVuZ3RoKCk7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIHdjb3V0IDw8IEwiMHgiIDw8IGhleCA8PCAoaW50KXdzW2ldIDw8IEwiICI7CiAgICAgICAgfQp9