Мне не удалось найти надежное решение для моей проблемы, я просто пытаюсь создать некоторую функцию, которая:
занимает позицию строк и столбцов в терминал.
вызывает mvinch (window_object, rows, cols) , который возвращает целое число без знака, соответствующее символу в терминале в этой позиции.
возвращает символ ascii, связанный с этим беззнаковым int, эффективно приводя его обратно к типу char.
Вот пример моего кода на c ++ 11:
char Kmenu::getChrfromW(size_t const y, size_t const x,
bool const save_cursor) const {
size_t curr_y, curr_x;
getyx(_win, curr_y, curr_x);
char ich = mvwinch(_win, y, x);
char ch = ich;
if (save_cursor)
wmove(_win, curr_y, curr_x);
return ch;
}
Если, например, символ в терминале в позиции 2,3 является буквой 'a', я хочу, чтобы эта функция возвращала букву 'a'.
Я попробовал решение, описанное здесь:
Преобразовать число ASCII в символ ASCII в C
, который эффективно преобразует целое число как char.
к сожалению, я получаю еще целое число: при тестировании с экраном, заполненным 'w, я получаю целое число 119.
Страница man для функции curses mvwinch () описывает функцию, возвращающую chtype , которую компилятор распознает как unsigned int.
Есть ли встроенная функция curses, которая возвращает символ напрямую, без приведения к unsigned int, или каким-либо другим способом, которым я могу этого достичь?
Редактировать: ch to ich, как в актуальный код