Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh melaksanakan input konsol tidak menyekat dalam C untuk aplikasi interaktif?
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!