преобразование utf8 и utf16

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

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

строку в обычный текстовый файл, его формат utf16 (я знаю это от других), "hao123--我的上网主页".

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

"hao123锛嶏紞鎴戠殑涓婄綉涓婚〉" в "hao123--我的上网主页" в строке char или C++ std?

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

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


person Dan    schedule 20.04.2010    source источник
comment
Какой язык программирования вы используете для этого?   -  person Oded    schedule 20.04.2010
comment
Наконец-то я сам написал одну функцию преобразования. Спасибо, Одед.   -  person Dan    schedule 22.04.2010


Ответы (2)


В С++ 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';
}
person Howard Hinnant    schedule 31.03.2011

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

person Dan    schedule 22.04.2010