Есть ли способ заставить cin подчиниться?

Например, если пользователь собирается что-то ввести, используя функцию cin, но через некоторое время он заставляет пользователя нажимать ввод без их фактического нажатия на клавишу ввода, чтобы завершить функцию cin.

  1. Cin ждет пользователя, чтобы закончить.
  2. Другой поток вызывает значение bool, которое говорит, что cin должен заканчиваться.
  3. Cin должен вводить себя как есть, даже если пользователь не закончил печатать.

1

Решение

Функциональность клавиши ввода реализуется программой оболочки, и стандартная библиотека C ++ не определяет какой-либо контроль над ней. Вам нужно послать некоторый межпроцессный сигнал, чтобы получить оболочку, или что-то, что выводится на cin (в Unix, идентифицируется дескриптором файла 1), чтобы очистить его вывод.

Обычный способ предоставления интерактивного текстового интерфейса в системе Posix: Ncurses, но я не видел, чтобы это использовалось с iostreams. (Ну, я не очень знаком с проклятиями.)

2

Другие решения

Я немного покопался и нашел способ сделать это!

#include <windows.h>

INPUT input;
memset(&input,0,sizeof(input));
input.type = INPUT_KEYBOARD;
input.ki.wVk=VkKeyScanA('\n');
SendInput(1,&input,sizeof(INPUT));
input.ki.dwFlags=KEYEVENTF_KEYUP;
SendInput(1,&input,sizeof(INPUT));

Он стимулирует клавишу ввода или новую строку.

Как видно здесь http://www.dreamincode.net/forums/topic/153423-simulate-keyboard-press/

-2

По вопросам рекламы [email protected]