>백엔드 개발 >C++ >대화형 애플리케이션을 위해 C에서 비차단 콘솔 입력을 어떻게 구현할 수 있습니까?

대화형 애플리케이션을 위해 C에서 비차단 콘솔 입력을 어떻게 구현할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 17:39:30720검색

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

C의 비차단 콘솔 입력

최신 C에서는 비차단 콘솔 입력을 통해 프로그램이 실행되는 동안 사용자 명령을 원활하게 처리할 수 있습니다. 계속해서 실행되고 정보가 출력됩니다. 이 기능은 대화형 애플리케이션과 게임에서 종종 중요합니다.

C 11 솔루션:

비차단 콘솔 입력을 구현하는 효과적인 방법 중 하나는 별도의 콘솔 입력을 사용하는 것입니다. 실. 이 접근 방식을 사용하면 백그라운드 스레드가 콘솔의 입력을 모니터링하는 동안 기본 프로그램이 계속 실행될 수 있습니다. 다음 코드 샘플은 C 11을 사용한 이 접근 방식을 보여줍니다.

<code class="cpp">#include <iostream>
#include <future>
#include <thread>
#include <chrono>

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

int main()
{
    std::chrono::seconds timeout(5);
    std::cout << "Do you even lift?" << std::endl << std::flush;
    std::string answer = "maybe"; // default to maybe
    std::future<std::string> future = std::async(getAnswer);

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

    std::cout << "the answer was: " << answer << std::endl;
    exit(0);
}</code>

설명:

이 예에서 getAnswer 함수는 사용자 입력 검색을 담당합니다. std::async 함수는 getAnswer를 실행하고 결과를 검색하는 데 사용할 수 있는 std::future 객체를 반환하는 별도의 스레드를 시작합니다.

메인 프로그램은 사용자 입력을 기다리는 시간 제한을 5초로 설정합니다. . 사용자가 이 시간 내에 입력을 입력하면 프로그램은 응답 변수를 입력으로 설정합니다. 그렇지 않으면 기본값은 "아마도"입니다.

이 비차단 입력 접근 방식을 통해 프로그램은 사용자 입력에 효율적으로 응답하면서 진행 중인 계산과 출력을 계속할 수 있습니다. 이는 대화형 C 애플리케이션을 구축하는 강력한 기술입니다.

위 내용은 대화형 애플리케이션을 위해 C에서 비차단 콘솔 입력을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.