Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Ввод значения переменной без Enter в С++  (Прочитано 3653 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MaximKaz

  • Автор темы
  • Участник
  • *
  • Сообщений: 206
  • С++ forever!
    • Просмотр профиля
Нужна функция, которая считывала бы с клавиатуры символ, и вводила бы этот символ в переменную, но пользователю не нужно было бы нажимать Enter. По сути я прошу аналог getche() под Linux. Я знаю что это не стандарт в С++, и что в Linux нету conio.h. Перерыл Гугл, находил лишь огромные функции-аналоги (мало понятные мне), которые в каждой программе нужно писать самому или какие нибудь getchar(), которые всё же требовали нажатия Enter. Я пишу прогу с горячими клавишами, но после нажатия, к примеру, F2 пользователь будет нажимать Enter??? Это глупо.
Пожалуйста, помогите!
Fedora 17 | KDE | Intel Core i3 3.1 Ghz | RAM 2x2 | nVidia GeForce GTS 250 (1 Gb) | 620 Gb HDD (SATA & IDE) | DSL - 8 Mb/sec

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #1 : 04 Июня 2012, 15:46:24 »
Может это поможет, перехватить нажатие клавиши и обработать его: http://sources.ru/builder/faq/041.html
« Последнее редактирование: 04 Июня 2012, 15:48:31 от Señor_Gaga »

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #2 : 04 Июня 2012, 16:56:22 »
Посмотри библиотеку ncurses, вроде там было.

Оффлайн Softwayer

  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #3 : 04 Июня 2012, 17:36:55 »
getch(), вроде в ncurses есть

Пользователь решил продолжить мысль 04 Июня 2012, 17:42:36:
#include <curses.h>
//...
getch();
Так, по идее, должно работать
« Последнее редактирование: 04 Июня 2012, 17:42:36 от Softwayer »

Оффлайн MaximKaz

  • Автор темы
  • Участник
  • *
  • Сообщений: 206
  • С++ forever!
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #4 : 04 Июня 2012, 20:13:31 »
А можно ли это сделать без дополнительных библиотек, чтобы ничем лишним программу не грузить. Неужели все программы с горячими клавишами на C++ под Linux написаны с использованием этого ncurses.  :'( Или тогда уж дайте мне функцию-аналог, только с подробными комментариями, чтобы в моей программе было не тупо скопировано, а написано с пониманием!
Может это поможет, перехватить нажатие клавиши и обработать его: http://sources.ru/builder/faq/041.html
Не понятно, сори.  :-[
Fedora 17 | KDE | Intel Core i3 3.1 Ghz | RAM 2x2 | nVidia GeForce GTS 250 (1 Gb) | 620 Gb HDD (SATA & IDE) | DSL - 8 Mb/sec

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #5 : 04 Июня 2012, 20:36:15 »
Если

Не понятно, сори.  :-[

то
А можно ли это сделать без дополнительных библиотек, чтобы ничем лишним программу не грузить.

нельзя.

И что может быть непонятного в вызове функции?

getch(), вроде в ncurses есть

Пользователь решил продолжить мысль 04 Июня 2012, 17:42:36:
#include <curses.h>
//...
getch();
Так, по идее, должно работать

Оффлайн MaximKaz

  • Автор темы
  • Участник
  • *
  • Сообщений: 206
  • С++ forever!
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #6 : 04 Июня 2012, 21:01:04 »
Хорошо, как скачать с оффицального репозитория Ubuntu библиотеку ncurses? И как правильно компилировать исходник с подключенным #include <curses.h>? После ответа на эти вопросы топик будем считать исчерпанным.  :-\
Fedora 17 | KDE | Intel Core i3 3.1 Ghz | RAM 2x2 | nVidia GeForce GTS 250 (1 Gb) | 620 Gb HDD (SATA & IDE) | DSL - 8 Mb/sec

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #7 : 04 Июня 2012, 22:05:38 »
apt-get install libncurses-dev
А вообще все ответы тут в огромном количестве.

http://lmgtfy.com/?q=How+to+link+libncurses

Оффлайн Softwayer

  • Активист
  • *
  • Сообщений: 706
  • Arch Linux
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #8 : 05 Июня 2012, 12:36:16 »
как правильно компилировать исходник с подключенным #include <curses.h>?
g++ hello.cpp -O2 -Wall -lncurses -o helloНе?
« Последнее редактирование: 05 Июня 2012, 12:40:26 от Softwayer »

Оффлайн MaximKaz

  • Автор темы
  • Участник
  • *
  • Сообщений: 206
  • С++ forever!
    • Просмотр профиля
Re: Ввод значения переменной без Enter в С++
« Ответ #9 : 05 Июня 2012, 13:35:59 »
Всем спасибо!
Fedora 17 | KDE | Intel Core i3 3.1 Ghz | RAM 2x2 | nVidia GeForce GTS 250 (1 Gb) | 620 Gb HDD (SATA & IDE) | DSL - 8 Mb/sec

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.