Получение неожиданного персонажа с помощью addch - PullRequest
0 голосов
/ 03 июля 2019

Я использую ncurses с noecho(), и я пытаюсь напечатать строку из массива TCHAR (или char16_t) с функцией addch().

Я пробовалприведение моего TCHAR к int, но с тем же результатом.

Это код, который я использую:

coords hCursorPosition( GetCursorPosition() );
        if ( hCursorPosition.X == 0 ) return;
        coords nCursorPosition(hCursorPosition.Y, 0);
        SetCursorPosition(nCursorPosition);
        clrtoeol();
        if (!m_sInput.IsEmpty())
        {
            for (auto CharIt(m_sInput.CreateConstIterator()); CharIt; CharIt++)
            {
                const TCHAR Char = *CharIt;
                int intChar = static_cast<int>(Char);
                addch(intChar);
                refresh();
            }
        }

m_sInput - это FString (типиспользуется в Unreal Engine 4), я проверил длину FString, и она правильная, хотя результат не тот, который я ожидаю.

Например, если m_sInput "test", мой вывод будетбыть "тестом ^ @"

1 Ответ

2 голосов
/ 03 июля 2019

addch ожидает параметр chtype, который содержит 8-битный символ (и если вам случится передать его NUL , это покажет, что ^@).

wchar_t содержит более 8-битного символа. Используйте addwstr для , что .

...