Блог О пользователеfearuth

Регистрация

*nix

  • Краткое описание 

    Библиотека ncurses (аналог библиотеки crt в Pascal) предназначена для управления вводом выводом на терминал. Она позволяет программисту не беспокоиться об аппаратных различиях терминалов и писать достаточно переносимый код. Файлы библиотеки находятся в папке /usr/include/curses/, дополнительную информацию и примеры можно найти в /usr/share/doc/ncurses-версия_библиотеки и в /usr/share/doc/ncurses-devel-версия_библиотеки.

    (http://alexber220.narod.ru/ncurses/index.htm)


    Ncurses — библиотека (аналог библиотеки crt в Pascal) предназначена для управления вводом/выводом на терминал. Она позволяет программисту не беспокоиться об аппаратных различиях терминалов и писать достаточно портируемый код.

    (http://ru.wikipedia.org/wiki/Ncurses)


    Подготовка

    Поскольку я работаю под разными дистрибутивами, но основным инструментом моей работы является Debian GNU/Linux, то соответственно для него установка необходимого ПО выглядит следующим образом:

    #aptitude install ncurses-base ncurses-bin libncurses5 libncursesw5-dev

    Далее создадим файл с примером test.cpp:

    #include < ncurses.h >//подключаем библиотеку ncurses

    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() - данная функция используется для того, чтобы отобразить содержимое мнимого экрана на реальный.

    ЗЫ. Вот мой пример с реализацией идеологии С++ =)

    #include < ncurses.h >

    using namespace std;

    class A
    {
     public:
      A();
      ~A();
    };

    int main(int argc, char * argv[])
    {
     A();
     return 0;
    }

    A::A()
    {
     initscr();
     printw("Hellow World");
     refresh();
    }

    A::~A()
    {
     getch();
     endwin();

    }

    Используемый источник: http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/helloworld.html