Я получаю ввод с помощью GetAsyncKeyState (), который затем конвертирую в Unicode с помощью ToUnicodeEx ():
wchar_t character[1];
ToUnicodeEx(i, scanCode, keyboardState, character, 1, 0, layout);
Я могу записать это в файл с помощью wfstream следующим образом:
wchar_t buffer[128]; // Will not print unicode without these 2 lines
file.rdbuf()->pubsetbuf(buffer, 128);
file.put(0xFEFF); // BOM needed since it's encoded using UCS-2 LE
file << character[0];
Когда я открываю этот файл в Notepad ++, он находится в формате UCS-2 LE, когда я хочу, чтобы он был в формате UTF-8. Я считаю, что ToUnicodeEx () возвращает его в формате UCS-2 LE, он также работает только с широкими символами. Есть ли способ сделать это с помощью fstream или wfstream, сначала каким-то образом преобразовав в UTF-8? Спасибо!
ToUnicodeEx
, чтобы получить UTF-16LE, затемWideCharToMultiByte
, чтобы получить UTF-8 - person Richard Critten   schedule 20.04.2018