Преобразование шестнадцатеричного в юникод - PullRequest
0 голосов
/ 23 января 2011

В C ++ я хотел бы сохранить шестнадцатеричную строку в файл как символ Unicode. Пример: 0x4E3B сохранить в файл ---> 主

Любые предложения или идеи приветствуются.

1 Ответ

1 голос
/ 23 января 2011

Какая кодировка? Я предполагаю UTF-8.

Какая платформа?

Если вы под Linux, то

std::locale loc("en_US.UTF-8"); // or "" for system default
std::wofstream file;
file.imbue(loc); // make the UTF-8 locale for the stream as default
file.open("file.txt");   
wchar_t cp = 0x4E3B;
file << cp;

Однако, если вам нужна Windows, это совсем другая история:

Вам необходимо преобразовать кодовую точку в UTF-8. Много способов. Если оно больше 0xFFFF, преобразуйте его в UTF-16 и затем найдите, как использовать WideCharToMultiByte, а затем сохраните в файл.

...