Применение ncurses в С++

Обсуждение различной литературы о Linux

Модератор: Модераторы разделов

Ответить
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Применение ncurses в С++

Сообщение ArkanJR »

Огромная просьба поделиться ссылками на русскоязычную литературу по применению ncurses в С++ (желательно рассчитанную на новичков). Почему-то везде используются примеры с синтаксисом С.
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Применение ncurses в С++

Сообщение yars »

Почему-то везде используются примеры с синтаксисом С.

Немудрено, если учесть, что ncurses написана именно на С.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Применение ncurses в С++

Сообщение ArkanJR »

yars писал(а):
05.04.2014 22:33
Немудрено, если учесть, что ncurses написана именно на С.

Взаимодействие с ncurses можно организовать не только в C, но и во многих других языках (включая Python, Perl и C++)...

Источник
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Применение ncurses в С++

Сообщение yars »

ArkanJR
А я разве утверждал, что невозможно использовать ncurses в C++? Вам нужно лишь подключить соответствующий header и вперед. На русском сходу ничего по теме не нагуглил, но на английском есть хотя бы это.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Применение ncurses в С++

Сообщение ArkanJR »

yars писал(а):
05.04.2014 22:57
ArkanJR
А я разве утверждал, что невозможно использовать ncurses в C++? Вам нужно лишь подключить соответствующий header и вперед. На русском сходу ничего по теме не нагуглил, но на английском есть хотя бы это.

Что-то там всё слишком общо. Если Вам несложно, то объясните, пожалуйста, мне на пальцах: как с помощью ncurses в данной программе задать цвет фона - чёрный, цвет сообщений - светло-зелёный, цвет вводимых и выводимых значений - жёлтый?
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Применение ncurses в С++

Сообщение drBatty »

ArkanJR писал(а):
05.04.2014 22:15
Почему-то везде используются примеры с синтаксисом С.

а у вас примеры не компилируются? Не работают?

C++ это надмножество C, т.ч. смело пишите на PureC, и собирайте gcc. Можно даже часть файлов писать на C++, а часть на C. Можно и одновременно (хотя это быдлокод).

ArkanJR писал(а):
05.04.2014 23:04
как с помощью ncurses

что сразу с помощью ncurses?
ну сейчас попробую...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Применение ncurses в С++

Сообщение drBatty »

а, понял. Вы хотите использовать STL std::cout, да? Дык это и невозможно, ncurses она работает со своими графическими функциями, и std:: вы можете разве что для файлов использовать, а не для вывода.

т.ч. определяйтесь. Примеры ncurses ищите здесь, я проверил, они работают.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Применение ncurses в С++

Сообщение ArkanJR »

drBatty писал(а):
05.04.2014 23:30
что сразу с помощью ncurses?
ну сейчас попробую...

А каким ещё способом Вы предлагаете задавать цвет фона и текста в C++?
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Применение ncurses в С++

Сообщение drBatty »

ArkanJR

Код: Выделить всё

#include <iostream>
using namespace std;
int main()
{
    cout << "\x1B[44mTEST\x1B[0m" << endl;
    return 0;
}


PS: такая ерунда везде работает, в шелле тоже

ArkanJR писал(а):
05.04.2014 23:44
в C++?

ЭТО НЕ C++.
Пишите грамотно, не вводите людей в заблуждение. Вы вместо того, что-бы сказать "я хочу ехать на велосипеде" сказали "я хочу бежать в резинке".
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Применение ncurses в С++

Сообщение ArkanJR »

drBatty писал(а):
05.04.2014 23:51
\x1B[44mTEST\x1B[0m

Об этой строке можно поподробней? Просто откуда вопрос возник: заинтересовался темой цветов в С++, порыскал в литературе (Интернет-Университет Информационных Технологий "Введение в языки программирования С и С++"), но там был пример с использованием conio.h, который в gcc отсутствует. В Википедии в статье про conio.h имеется ссылка на Ncurses. Оттуда я и начал копать, как в задать цвета в консольной программе на С++ под linux...
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Применение ncurses в С++

Сообщение drBatty »

PS: C++ это развитие C, отличается от C
1. наличием ООП. Т.е. есть не только структуры, но и классы, которые позволяют создавать свои типы данных. Вы можете создать свой тип String, и писать такой код:

Код: Выделить всё

String a = "zzz";
String b = "123";
String c;
c = a + b;
c.print();

напечатает "zzz123". Наверное. А может и нет. От вас зависит.

2. наличием шаблонов. Т.е. можно сделать один шаблон, а потом подставлять в него любые типы(в т.ч. свои из п1). Компилятор сам создаст новый класс(функцию).

Вот благодаря исключительно п2 (НЕ п1!) сделали STL, с кучей шаблонов. В т.ч. и шаблон iostream, для ввода/вывода в файл-поток (stream). В glibc для этого есть fread/printf/fopen и т.п. Ну а шаблон cout -- просто обёртка с симпатичным синтаксисом. Никакого ООП там НЕТ. Т.е. это очень малая часть ЯП. Она даже в стандарт не так давно попала, а до того была как ncurses, просто одной из Over9000 библиотек.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Применение ncurses в С++

Сообщение drBatty »

ArkanJR писал(а):
05.04.2014 23:58
Об этой строке можно поподробней?

http://en.wikipedia.org/wiki/ANSI_escape_code

цвета: http://en.wikipedia.org/wiki/ANSI_escape_code#Colors

используя возможности C++ вы можете сделать свою функцию <<. Вот так:

Код: Выделить всё

#include <iostream>
using namespace std;

enum colors { BBLUE=44, NORMAL=0 };

ostream& operator<<(ostream &os, colors c)
{
    int i = c;
    os << "\x1B[";
    os << i;
    os << "m";
    return os;
}

int main()
{
    cout << BBLUE << "TEST" << NORMAL << endl;
    return 0;
}
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Применение ncurses в С++

Сообщение ArkanJR »

Если ещё не сильно надоел, то подскажите пожалуйста, как задать цвет текста для вводимых данных?
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Применение ncurses в С++

Сообщение drBatty »

ArkanJR писал(а):
06.04.2014 13:33
как задать цвет текста для вводимых данных?

а вы определились? Если вы хотите делать через ESC коды(0x1B), то просто выведите нужный цвет.

в консоли:

$

echo -ne "\x1B[43m"; read; echo -e "\x1B[0m"

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить