UTF8 и UTF16 преобразование

У меня есть строка wchar_t, например, L"hao123--我的上网主页", я могу преобразовать ее в utf8

кодировка, строка вывода "hao123锛嶏紞鎴戠殑涓婄綉涓婚〉", но, наконец, я должен написать это

строка в простой текстовый файл, его формат - utf16 (я знаю это от других), "hao123\uFF0D\uFF0D\u6211 \u4E0A\u7F51\u4E3B\u9875".

Потому что я должен сохранить его в строке C++ std, а затем записать его в файл, Как я могу конвертировать

"hao123 to 嶏 紞 鎴 戠 殑 涓 婄 綉 涓〉〉" в "hao123\uFF0D\uFF0D\u6211\u7684\u7E0A \ u4F0 \ u4E3B \ u9875" в строке типа char или C++?

Кто-нибудь может дать мне несколько советов?

Заранее спасибо!

2 ответа

В C++11 это можно сделать с помощью:

#include <locale>
#include <codecvt>
#include <string>
#include <iostream>

int main()
{
    std::wstring_convert<std::codecvt_utf16<wchar_t> > myconv;
    std::wstring ws(L"hao123--\x6211\x7684\x4E0A\x7F51\x4E3B\x9875");
    std::string bs = myconv.to_bytes(ws);
    std::cout << bs << '\n';
}

Я написал о функции преобразования самостоятельно, для получения дополнительной информации, пожалуйста, посетите C++ Unicode UTF-16 кодировку

Другие вопросы по тегам