Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-10-30 17:39:30
asal
737 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan