Glfw С++ Ввод русского текста с клавиатуры

138
01 мая 2021, 00:40

Питаюсь вводить текст с клавиатуры и сразу отправляю в консоль, с английским без проблем но вместо русского вводить какие то цифры и английские буквы.

вот функция обработки и регистрации

Русский в консоли включён!

void character_callback( GLFWwindow *window, unsigned int codepoint )
{
    std::cout << (char)codepoint;
    Text+=(char)codepoint;
}
glfwSetCharCallback( window, character_callback );

Как с помощью glfw вводить кириллицу?

========================================== Помог Коментарии, сделал таблицу соответствия кодировок и всё. Ответ помог выводить в консоль спасибо. Но мне нужно было имен о преобразовать в обычный char. Я это решил. всем спасибо.

Answer 1

Для начала нам нужно переключить режим стандартных потоков ввода/вывода с помощью функции _setmod1 (делаем это где-нибудь в main, например):

_setmode(_fileno(stdout), _O_U16TEXT);
_setmode(_fileno(stdin),  _O_U16TEXT);
_setmode(_fileno(stderr), _O_U16TEXT);

Согласно документации GLFW, мы можем рассматривать codepoint как UTF-32 символ с нативным порядком байтов. Тогда ваша функция character_callback может выглядеть примерно следующим образом:

void character_callback(GLFWwindow *window, unsigned int codepoint)
{
    const wchar_t wideChar = codepoint;       
    std::wcout << wideChar;
    <...>
}

1) Подробнее про русский язык в консоли смотрите в этом ответе.

READ ALSO
Несколько вопросов по указателям в С++

Несколько вопросов по указателям в С++

Возникло несколько вопросов связанных с raw pointers в С++Рассмотрим следующий код

103
Чем открыть проект .cbproj?

Чем открыть проект .cbproj?

Достался проект с расширениемcbproj

105
Ключевое слово this с++

Ключевое слово this с++

Возник такой вопросВ коде реализуется конструктор копирования обьекта

120