Библиотека ncurses (аналог библиотеки crt в Pascal) предназначена для управления вводом выводом на терминал. Она позволяет программисту не беспокоиться об аппаратных различиях терминалов и писать достаточно переносимый код. Файлы библиотеки находятся в папке /usr/include/curses/, дополнительную информацию и примеры можно найти в /usr/share/doc/ncurses-версия_библиотеки и в /usr/share/doc/ncurses-devel-версия_библиотеки.
()
Ncurses — библиотека (аналог библиотеки crt в Pascal) предназначена для управления вводом/выводом на терминал. Она позволяет программисту не беспокоиться об аппаратных различиях терминалов и писать достаточно портируемый код.
()
Подготовка
Поскольку я работаю под разными дистрибутивами, но основным инструментом моей работы является Debian GNU/Linux, то соответственно для него установка необходимого ПО выглядит следующим образом:
using namespace std;//Используем стандартное пространство имен
int main(int argc, char argv[]) { initscr(); /* Старт режима curses */ printw("Hello World !!!"); /* Выводим Hello World */ refresh(); /* Выводим это на реальный экран */ getch(); /* Ожидаем пока пользователь нажмёт на кнопку */ endwin(); /* Конец режима curses */ return 0; }
После того как файл создан, нам нужно откомпилировать его: g++ -o test test.cpp -lncurses
*** -lncurses означает, что при компиляции происходит линковка с библиотекой libncurses.so, расположенной в /usr/lib/libncurses.so
Сейчас разберёмся с описанием функций используемых нами в примере:
initscr() - функция инициализирует экран в режим curses. В некоторых реализациях, она очищает экран, и предоставляет чистый бланк экрана. Для того, чтобы выполнять, какие либо действия с экраном пакет curses должен быть вызван первым. Данный пакет инициализирует систему curses и выделяет память для вашего окна представления (вызываемого stdscr) и некоторых других структур данных. В некоторых экстремальных случаях эта функция может из-за недостатка памяти выделить память под структуры данных библиотеки curses.
endwin() - данная функция должна быть использована в конце программы для завершения режима curses. В противном случае ваш терминал может вести себя странно после завершения программы. endwin() освобождает память взятую для подсистем curses, структур данных и выводит терминал в нормальный режим. Эта функция должна быть вызвана после того, как Вы завершите режим curses.
printw() - данная функция располагает текст с 0,0 (0 — строка, 0 — столбец) на мнимом экране.
refresh() - данная функция используется для того, чтобы отобразить содержимое мнимого экрана на реальный.