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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

Выход из цикла по нажатию определенной клавиши - C++

22.06.2013, 13:54. Просмотров 2559. Ответов 6
Метки нет (Все метки)

Допустим у меня есть какой-нибудь while(1) и мне нужно, чтобы при нажатии, например, esc или enter цикл завершался, как такое сделать?

Добавлено через 8 минут
А еще лучше, чтобы для продолжения цикла нажать enter, а для выхода из него esc и так после каждой итерации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2013, 13:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выход из цикла по нажатию определенной клавиши (C++):

Выход из цикла после нажатия определенной клавиши - C++
Здравствуйте, собственно, хотел узнать, как мне выйти из цикла, нажав определенную клавишу? Обычный цикл по заполнению массива

Выход из консоли по нажатию клавиши - C++
Что надо вставить, что бы по нажатию клавиши, скажем, <Enter> произошел выход из консольной программы.

Выход по нажатию клавиши из терминала (Linux(UNIX) - C++
Уважаемые программисты, возникла проблема. Есть клиент, в нем 2 потока. Нужно организовать выход из программы по нажатию комбинации клавиш...

Выход из бесконечного цикла по нажатию кнопки. - C++
Привет всем. как можно выйти из такого цикла по нажатию какой любой кнопки (например Esc) int main(){ while(1){ ...

Запуск\остановка цикла по нажатию клавиши - C++
Всем привет! Вопрос как реализовать запуск и остановку цикла в консольном приложении по нажатию клавиши f12?

Старый борланд: как выйти из бесконечного цикла по нажатию заданной клавиши? - C++
Короче нужно сделать прогу которая считает сколько отрицательных,положительных,равных 0 ввел пользователь. Реализовал.Пользователь вводит...

6
-=ЮрА=-
Заблокирован
Автор FAQ
22.06.2013, 14:18 #2
Цитата Сообщение от Wladius Посмотреть сообщение
Допустим у меня есть какой-нибудь while(1) и мне нужно, чтобы при нажатии, например, esc или enter цикл завершался, как такое сделать?
Добавлено через 8 минут
А еще лучше, чтобы для продолжения цикла нажать enter, а для выхода из него esc и так после каждой итерации.
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
36
37
#include <windows.h>
#include <iostream>
using namespace std;
 
bool ParseVKKey(int vKey);
 
int main()
{
    bool bWait = false;
    bool bStop = false;
    for(int i  = 0; i < INT_MAX && !bStop; i++)
    {
        cout<<"\nITERATION # "<<i + 1<<endl;
        bWait = true;
        while(bWait && !bStop)
        {
            cout<<"\rPRESS Enter for next iteration ESC - for exit";
            bStop =  ParseVKKey(VK_ESCAPE);
            bWait = !ParseVKKey(VK_RETURN);
            cin.sync();
            cin.clear();
            Sleep(100);
        }
        
        
    }
    return 0;
}
 
bool ParseVKKey(int vKey)
{
    bool bPress = false;
    if(GetAsyncKeyState(vKey))
    if(GetAsyncKeyState(vKey))
        bPress = true;
    return bPress;
}
2
Миниатюры
Выход из цикла по нажатию определенной клавиши  
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
22.06.2013, 14:37  [ТС] #3
@-=ЮрА=-, спасибо, но по-моему довольно сложный для понимания вариант
Не понимаю насчет кодов клавиш - с одной стороны обозначено ParseVKKey(int vKey), а тут уже ParseVKKey(VK_ESCAPE)

Добавлено через 1 минуту
И нужно еще каждый раз очищать поток ввода? cin.clear();
0
-=ЮрА=-
Заблокирован
Автор FAQ
22.06.2013, 14:39 #4
Цитата Сообщение от Wladius Посмотреть сообщение
а тут уже ParseVKKey(VK_ESCAPE)
отнють не сложный
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
bool ParseVKKey(int vKey);
- это объявление функции, а это уже использование в программе
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ParseVKKey(VK_ESCAPE);
VK_ESCAPE/VK_RETURN это известные константы задефайненные в WinUser.h
1
Миниатюры
Выход из цикла по нажатию определенной клавиши  
-=ЮрА=-
Заблокирован
Автор FAQ
22.06.2013, 14:41 #5
Цитата Сообщение от Wladius Посмотреть сообщение
И нужно еще каждый раз очищать поток ввода? cin.clear();
- да если юзер вводил что то в цикле ожидания нажатия Enter, то произойдёт проскок на столько итерайций сколько символов было введено. @Wladius, пробегись дебагером лучше - это будет лучше любых пояснений. На счёт простоты кода - проще сомневаюсь что возможно сделать не прибегая к getch - в коде всего 1 функция, которая использует 1 стандартную функцию
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
GetAsyncKeyState(vKey)
- куда уж проще и меньше
2
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
22.06.2013, 14:48  [ТС] #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
возможно сделать не прибегая к getch
Спасибо, а как подобное делается при помощи getсh ?
0
-=ЮрА=-
Заблокирован
Автор FAQ
22.06.2013, 15:39 #7
Цитата Сообщение от Wladius Посмотреть сообщение
Спасибо, а как подобное делается при помощи getсh ?
- вот так
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
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int i;
    int iWait = 0;
    int iStop = 0;
    for(i  = 0; !iStop; i++)
    {
        printf("\nITERATION # %d\n", i + 1);
        iWait = true;
        while(iWait && !iStop)
        {
            printf("\rPRESS Enter for next iteration ESC - for exit");
            switch(getch())
            {
            case 13:
                iWait = 0;
                break;
            case 27:
                iStop = 1;
                break;
            }
        }
    }
    return 0;
}
1
Миниатюры
Выход из цикла по нажатию определенной клавиши  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2013, 15:39
Привет! Вот еще темы с ответами:

Нажатие определенной клавиши на клавиатуре = Запуск определенной функции - C++
Здравствуйте. У меня такой вопрос: как при нажатии, к примеру, клавиши &quot;1&quot; на клавиатуре запустить нужную мне функцию (Окно с меню...

Выход по нажатию ESC - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; float sum(); float razn(); float del(); float proizv(); float...

Выход из выполнения по нажатию кнопки - C++
Доброго времени суток. Нужен код, с помощью которого можно выйти в любой момент из выполнения программы. Если нагляднее: программы...

Выход из программы по нажатию Esc - C++
подскажите как сделать чтобы по нажатию ESC выводился результат.затупил чутка int main(){ setlocale(LC_ALL, &quot;RUS&quot;); toll_Both...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
22.06.2013, 15:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru