Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Кракозябры в начале строки в консоли

#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 =

Комментариев нет:

Отправить комментарий