#include <iostream>
#include <string>
#include <locale>
std::string convert(std::wstring str, std::locale loc = std::locale(),
std::mbstate_t state = std::mbstate_t())
{
const wchar_t* a; char *b;
std::string res;
res.resize(str.size());
auto bytes = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc)
.out(state, &str[0], &str[str.size()], a, &res[0], &res[res.size()], b);
return res;
}
int main()
{
std::wstring a = L"abcdef";
std::string b = convert(a);
std::cout << b;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bG9jYWxlPgoKc3RkOjpzdHJpbmcgY29udmVydChzdGQ6OndzdHJpbmcgc3RyLCBzdGQ6OmxvY2FsZSBsb2MgPSBzdGQ6OmxvY2FsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ic3RhdGVfdCBzdGF0ZSA9IHN0ZDo6bWJzdGF0ZV90KCkpCnsKICAgIGNvbnN0IHdjaGFyX3QqIGE7IGNoYXIgKmI7CiAgICBzdGQ6OnN0cmluZyByZXM7CgogICAgcmVzLnJlc2l6ZShzdHIuc2l6ZSgpKTsKCiAgICBhdXRvIGJ5dGVzID0gc3RkOjp1c2VfZmFjZXQ8c3RkOjpjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIHN0ZDo6bWJzdGF0ZV90Pj4obG9jKQogICAgICAgIC5vdXQoc3RhdGUsICZzdHJbMF0sICZzdHJbc3RyLnNpemUoKV0sIGEsICZyZXNbMF0sICZyZXNbcmVzLnNpemUoKV0sIGIpOwoKICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp3c3RyaW5nIGEgPSBMImFiY2RlZiI7CiAgICBzdGQ6OnN0cmluZyBiID0gY29udmVydChhKTsKCiAgICBzdGQ6OmNvdXQgPDwgYjsKfQ==