«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать неблокирующий консольный ввод на C++ для интерактивных приложений?

Как реализовать неблокирующий консольный ввод на C++ для интерактивных приложений?

Опубликовано 8 ноября 2024 г.
Просматривать:546

How can I implement non-blocking console input in C   for interactive applications?

Неблокирующий консольный ввод в C

В современном C неблокирующий консольный ввод позволяет плавно обрабатывать пользовательские команды во время работы программы продолжает работать и выводить информацию. Эта возможность часто имеет решающее значение в интерактивных приложениях и играх.

C 11 Решение:

Один эффективный способ реализовать неблокирующий консольный ввод — использовать отдельный нить. Такой подход позволяет основной программе продолжать выполнение, в то время как фоновый поток отслеживает вводимые данные с консоли. Следующий пример кода демонстрирует этот подход с использованием C 11:

#include 
#include 
#include 
#include 

static std::string getAnswer()
{
    std::string answer;
    std::cin >> answer;
    return answer;
}

int main()
{
    std::chrono::seconds timeout(5);
    std::cout  future = std::async(getAnswer);

    if (future.wait_for(timeout) == std::future_status::ready)
        answer = future.get();

    std::cout 

Объяснение:

В этом примере функция getAnswer отвечает за получение введенных пользователем данных. Функция std::async запускает отдельный поток, который выполняет getAnswer и возвращает объект std::future, который можно использовать для получения результата.

Основная программа устанавливает тайм-аут в 5 секунд для ожидания пользовательского ввода. . Если пользователь вводит данные в течение этого времени, программа устанавливает переменную ответа на вход. В противном случае по умолчанию используется значение «может быть».

Этот подход к неблокирующему вводу позволяет программе продолжать текущие вычисления и вывод, при этом эффективно реагируя на ввод пользователя. Это мощный метод создания интерактивных приложений на языке C.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3