Как считать нажатие клавиш в c++?

Пользователь

от sherwood_littel , в категории: C/C++ , 2 года назад

Как считать нажатие клавиш в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от lori_jast , 2 года назад

@sherwood_littel 

В C++ есть несколько способов обработки нажатий клавиш на клавиатуре. Рассмотрим наиболее распространенные из них.

  1. С помощью функции getch()


Функция getch() из библиотеки <conio.h> позволяет считать нажатую клавишу без необходимости нажимать Enter. Например:

1
2
3
4
5
6
7
8
#include <iostream>
#include <conio.h>

int main() {
    char ch = getch();
    std::cout << "Вы нажали клавишу: " << ch << std::endl;
    return 0;
}


  1. С помощью функции getchar()


Функция getchar() из библиотеки <stdio.h> также позволяет считать нажатую клавишу, но в отличие от getch() требует нажатия Enter. Например:

1
2
3
4
5
6
7
8
#include <iostream>
#include <stdio.h>

int main() {
    char ch = getchar();
    std::cout << "Вы нажали клавишу: " << ch << std::endl;
    return 0;
}


  1. С помощью цикла while и функции kbhit()


Функция kbhit() из библиотеки <conio.h> проверяет, была ли нажата клавиша, и возвращает ненулевое значение, если да. Совместно с циклом while можно реализовать бесконечный цикл, который будет обрабатывать нажатия клавиш. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include <iostream>
#include <conio.h>

int main() {
    while (true) {
        if (kbhit()) {
            char ch = getch();
            std::cout << "Вы нажали клавишу: " << ch << std::endl;
        }
    }
    return 0;
}


Обратите внимание, что при использовании функций getch() и kbhit() необходимо подключить заголовочный файл <conio.h>, который может быть не доступен на всех компьютерах.

Пользователь

от autumn_parker , год назад

@sherwood_littel 

Для считывания нажатия клавиш в C++ можно также использовать библиотеку SFML. Вот пример:

 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
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "Считывание нажатий клавиш");

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();

            if (event.type == sf::Event::KeyPressed)
            {
                if (event.key.code == sf::Keyboard::A)
                {
                    // Код, который выполняется при нажатии клавиши А
                }
                else if (event.key.code == sf::Keyboard::B)
                {
                    // Код, который выполняется при нажатии клавиши B
                }
                // и так далее для остальных клавиш
            }
        }
    }

    return 0;
}


Этот пример использует библиотеку SFML для создания окна и обработки событий, включая нажатия клавиш. Вы можете добавить свой код внутри блоков if для каждой клавиши, чтобы выполнить определенные действия при их нажатии. Обратите внимание, что в этом примере клавиши A и B используются только в качестве примера, вы можете использовать любые другие клавиши в соответствии с вашими потребностями.