Так что в основном я просто хочу читать символы от пользователя и информировать свой код о том, что когда пользователь вводит определенную комбинацию (например, CTRL + F - но без подтверждения с помощью Enter, для exmaple), это конец ввода. Как я могу это сделать? Я только знаю, как читать символы с ввода и сравнения их ASCII в ...Чтение комбинации без подтверждения с enter?
ответ
попробовать
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
bool keepGoing = true;
char key = ' ';
while (keepGoing){
cout << "Enter a key" << endl;
while(_kbhit()){
key = _getch();
cout << "You entered: " << key << endl;
}
}
}
затем указать разделитель, когда закончится цикл.
если на linux проклятия имеются. есть также функция getch. вы должны использовать проклятия, если вы нацелены на совместимость между платформами. Библиотечные функции ncurses аналогичны функциям в conio.h. ncurses tutorial
И в каком файле заголовка есть _kbhit() и _getch()? –
@Matt Peterson conio.h – 4pie0
Системный вызов Windows ReadConsoleInput
позволяет вам напрямую считывать ввод в консоль. Вы можете обернуть этот вызов в функцию, которая просто извлекает основные данные из нескольких параметров функции ReadConsoleInput
. Вы можете написать функцию, чтобы проверить, есть ли какой-либо ввод, используя GetNumberOfConsoleInputEvents
.
EDIT Повторяя ваш вопрос, я понимаю, что я неверно истолковал ваш вопрос. Я оставлю это, потому что он может быть полезен вам или другим.
То, о чем вы просите, не должно многое делать с чтением символов. Фактически, CTRL не является персонажем вообще. В основном вы просто проверяете ключевые нажатия. Обработка такого ввода зависит от платформы, и даже на одной платформе будут существовать несколько методов. Один из способов сделать это для окон - использовать GetAsyncKeyState
. Эта функция проверяет, нажат ли указанный ключ прямо сейчас. Обратите внимание, что он не «запоминает» вход, поэтому вам нужно будет проверять эту функцию много раз в секунду, чтобы зарегистрировать все входные данные пользователя.
Вы предоставляете функцию с одним аргументом, определяющим ключ, для которого вы хотите проверить состояние. Список всех ключевых кодов можно найти here
Пример:
#include <iostream> //for output
#include <windows.h> //for GetAsyncKeyState
int main()
{
while(true)
{
if(GetAsyncKeyState(VK_CONTROL)) //CTRL-key is pressed
{
if(GetAsyncKeyState(0x46)) //F-key is pressed
std::cout << "CTRL-F is pressed" << std::endl;
if(GetAsyncKeyState(0x58)) //X-key is pressed
break;
}
}
std::cout << "CTRL-X was pressed, stopping.." << std::endl;
}
Этот пример будет постоянно проверять, если CTRL-F
вытесняется, и если так писать выход, пока CTRL-X
не будет нажата.
- 1. Чтение из STDIN без нажатия ENTER
- 2. Чтение символа без необходимости нажатия кнопки Enter
- 3. Чтение номера подтверждения TCP
- 4. Чтение значений float до ENTER
- 5. Форма подтверждения Javascript без предупреждения()
- 6. Выбор без нажатия enter?
- 7. Искра - комбинации без повторения
- 8. Комбинации PostgreSQL без повторений
- 9. Комбинации без использования «itertools.combinations»
- 10. Комбинации без повторения матрицы
- 11. Комбинации Python без повторений
- 12. Исключите отчеты без комбинации
- 13. комбинации массивов без повторов
- 14. UITableView удалять без подтверждения
- 15. C++: чтение символов перед нажатием ENTER
- 16. ввода номера без использования Enter [с]
- 17. Блок Подавать с ENTER без одной формы
- 18. включить jcombobox без нажатия enter
- 19. Чтение комбинации строки и двойное из файла
- 20. Возврат нажатой клавиши без ввода для подтверждения
- 21. комбинации с различной длиной и без повторения
- 22. Итерационные комбинации с повторениями без учета заказа
- 23. Сохранить как кнопку без подтверждения
- 24. Python, комбинации, перестановки без повторения
- 25. Не удалять объект без подтверждения
- 26. Скопируйте файл без диалога подтверждения
- 27. Чтение с консоли не останавливается, когда я нажимаю Enter
- 28. Рассчитайте возможные комбинации даты без
- 29. Получить все комбинации без повторений
- 30. Windows Phone SMS без подтверждения
Windows или Linux или что-то еще? –
Извините, что не упоминал, Windows. – Straightfw
может ли он быть закончен конкретным персонажем? – 4pie0