Как вы помните, в блокноте Windows есть возможность кодирования в функции «Сохранить как …»: как ASCII (по умолчанию), UTF-8, Unicode и Big Endian.
Мне нужно сделать программу, которая делает что-то с текстом файла ASCII .txt и сохраняет результат как файл Unicode .txt.
Я попытался прочитать из ASCII как char и преобразовать его в wchar_t один за другим — успешно, но у меня есть UTF-8 вместо UTF-16LE. Вот как я это делаю:
int result = (int)input_char; //input_chat is char from ASCII
while(result<0) result+=256;
wchar_t output_wchar = wchar_t(result);
Этот код работает файл и не теряет символы ASCII.
Если ваш источник ASCII и wchar_t
имеет размер 2 байта, и вы находитесь в системе с прямым порядком байтов (что я думаю, что это безопасное предположение), на самом деле нет ничего, кроме неявного преобразования.
wchar_t output_char = input_char;
Тогда вы можете просто взорвать wchar_t
s туда, куда вы хотите их написать.
Других решений пока нет …