Форум программистов, компьютерный форум CyberForum.ru

Выход по Esc из любого места программы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
styleroom
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 6
03.11.2011, 11:41     Выход по Esc из любого места программы #1
Привет!

Изучаю С++ на примере создания консольной программы. Типа - ввели данные, вывели данные.

Вопрос - а как выйти из программы в любом месте по нажатию Escape?

Можно конечно перед каждым началом ввода символов проверять функцией код вводимого символа и если он 27 то - exit. Но если будет 100 строк для ввода данных - 100 раз проверять код клавиши, наверное, было бы крайне неразумно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2011, 11:41     Выход по Esc из любого места программы
Посмотрите здесь:

Выход по ESC C++
Выход из программы по нажатии esc C++
Изменение ProgressBar диалогового окна из любого места C++
C++ Прерывание программы по ESC C++
C++ Выход из программы из любого места
Выход по нажатию ESC C++
C++ выход из программы
C++ Выход из программы по нажатию Esc

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
03.11.2011, 12:20     Выход по Esc из любого места программы #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <cstdlib>
 
void signal_handler( int signum )
{
    std::cout << "\nSignal " << signum << " received\n";
 
    static char sigint_count = 0;
 
    if( signum == SIGINT )
       sigint_count++;
 
    if( sigint_count == 5 )
       exit(0);
 
    // снова повесить эту функцию на этот сигнал
    signal( signum, signal_handler );
}
 
 
int main()
{
    signal( SIGINT, signal_handler ); // ctrl+c
 
    for(;;)
    {
        std::cout << '.';
        usleep( 500000 );
    }
 
 
    return 0;
}
Перехват нажатия Ctrl+C. Хотя и без него выход по Ctrl+C происходит
styleroom
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 6
03.11.2011, 12:32  [ТС]     Выход по Esc из любого места программы #3
talis,
Спасибо за подсказку! Буду пытаться осмыслить код!
У самого получилось вот что =
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void esc(); // функция-обертка с выходом по Escape
 
int _tmain(int argc, _TCHAR* argv[])
{
   char symb;// сюда получаем вводимый пользователем символ
   int code_symb;// сюда пишем ANSiII код нажатой клавиши
 
   std::cout << "Please, enter any string..." << std::endl;
   symb = getch();
   code_symb = symb;
 
   do
   {
      esc();
   }
   while(code_symb != 27);
 
   getch();
   return 0;
}
 
void esc()
{
   char symb;// сюда получаем вводимый пользователем символ
   int code_symb;// сюда пишем ANSiII код нажатой клавиши
 
   symb = getch();// получили символ с клавиши
   code_symb = symb;// сюда воткнули ANSII-код клавиши
 
   if(code_symb == 27)exit(1); else std::cout << symb;  
   if(code_symb == 13)std::cout << std::endl;// перешли по Enter на другую строку
 
}
Yandex
Объявления
03.11.2011, 12:32     Выход по Esc из любого места программы
Ответ Создать тему
Опции темы

Текущее время: 04:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru