#cpp #mingw
Поставил кодировку utf-8:
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
Вывожу текст в потоке:
cout << "Введите первое число: a = ";
А консоль выдает мне вот это:
��ведите первое число: a =
Пытался искать информацию в тырнете, ничего, к сожалению, не нашел, возможно неправильно
искал. Помогите пожалуйста решить проблему.
Ответы
Ответ 1
Это происходит из-за того, что низкоуровневые WinApi функции для вывода строк в консоль в UTF-8 ожидают завершенную строку. Такие функции как puts выведут вашу строку корректно. А вот вывод через basic_ostream::operator<<(char*) вероятно для строки "Введите первое число: a = " cначала вызывает winapi с первым байтом двухбайтового символа В, затем со вторым и остатком строки, что отображается как: ��ведите первое число: a =
Комментариев нет:
Отправить комментарий