Как использовать CTRL + C, чтобы перестать получать ввод от пользователя? - PullRequest
0 голосов
/ 13 января 2020

Я хотел написать консольное приложение для ноутбука, которое получает текст от пользователя и сохраняет его в файле .txt. Таким образом, для ввода текста я использую while-l oop:

while (getline(std::cin, line)) {
    myfile << line << "\n";
}

Если пользователь закончил писать текст, он / она должен что-то сделать, чтобы l oop сломался. Я нашел то, что называется обработка сигналов , но не знаю, как реализовать это в моем коде. Я также пытался SetConsoleCtrlHandler от Microsoft. Как мне его использовать, или есть ли другие способы выполнить задание?

1 Ответ

0 голосов
/ 13 января 2020

ОК, если вам нужен только Ctrl + C в качестве конца ввода:

Используйте SetConsoleCtrlHandler для обнаружения Ctrl + C и установите stop_flag (std :: atomic_bool) для остановки ввода.

Ваш цикл ввода должен быть таким:

Use while (!stop_flag) {
  if (_kbhit()) {
    auto symbol = _getch();
    // Process input char-by-char
    // ...
  }
  // May be add some sleep for 20 ms
  // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...