Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh melaksanakan input konsol tidak menyekat dalam C untuk aplikasi interaktif?

Bagaimanakah saya boleh melaksanakan input konsol tidak menyekat dalam C untuk aplikasi interaktif?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 17:39:30629semak imbas

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

Input Konsol Tanpa Sekat dalam C

Dalam C moden, input konsol tanpa sekat membolehkan pengendalian arahan pengguna yang lancar semasa program terus berjalan dan mengeluarkan maklumat. Keupayaan ini selalunya kritikal dalam aplikasi dan permainan interaktif.

Penyelesaian C 11:

Satu cara berkesan untuk melaksanakan input konsol tanpa sekatan adalah melalui penggunaan yang berasingan benang. Pendekatan ini membenarkan atur cara utama untuk terus melaksanakan sementara benang latar belakang memantau konsol untuk input. Contoh kod berikut menunjukkan pendekatan ini menggunakan 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>

Penjelasan:

Dalam contoh ini, fungsi getAnswer bertanggungjawab untuk mendapatkan semula input pengguna. Fungsi std::async melancarkan urutan berasingan yang melaksanakan getAnswer dan mengembalikan objek std::depan yang boleh digunakan untuk mendapatkan semula hasilnya.

Atur cara utama menetapkan tamat masa 5 saat untuk menunggu input pengguna . Jika pengguna memasukkan input dalam masa ini, program menetapkan pembolehubah jawapan kepada input. Jika tidak, ia lalai kepada "mungkin."

Pendekatan input tidak menyekat ini membolehkan program meneruskan pengiraan dan outputnya yang berterusan sambil masih bertindak balas kepada input pengguna dengan cekap. Ia merupakan teknik yang berkuasa untuk membina aplikasi C interaktif.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan input konsol tidak menyekat dalam C untuk aplikasi interaktif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn