Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah \"cin\" Hanya Membaca Perkataan Pertama dalam C ?

Mengapakah \"cin\" Hanya Membaca Perkataan Pertama dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 16:19:03723semak imbas

Why Does

"cin" Hanya Membaca Perkataan Pertama dalam C : Penjelasan dan Penyelesaian

Dalam coretan kod yang disediakan, pengendali aliran cin sedang digunakan untuk membaca input ke dalam tatasusunan aksara str. Walau bagaimanapun, ia hanya membaca perkataan pertama input, yang membawa kepada pengambilan semula rentetan yang tidak lengkap.

Mengapa cin Berkelakuan Begini

Secara lalai, cin membaca aksara secara berurutan dan mengehadkan input berdasarkan aksara ruang putih (cth., ruang, tab). Apabila ia menemui aksara ruang putih, ia menganggap urutan input selesai dan beralih ke input seterusnya.

Penyelesaian 1: cin.getline() untuk Tatasusunan Char

Kepada membaca keseluruhan baris input, kita boleh menggunakan fungsi cin.getline() dan bukannya cin. Ia memerlukan dua parameter: tatasusunan char untuk dibaca dan saiz tatasusunan untuk memastikan limpahan penimbal tidak berlaku.

<code class="c++">char str[100];
cin.getline(str, sizeof str);</code>

Penyelesaian 2: getline() untuk std::string

Jika anda menggunakan C 11 atau lebih baru, anda boleh memanfaatkan jenis std::string dan gunakan fungsi getline():

<code class="c++">std::string str;
std::getline(cin, str);</code>

Syor Pengkompil Moden

Sangat disyorkan untuk menaik taraf daripada Turbo C 4.5 kepada penyusun yang lebih moden. Visual Studio Express ialah pilihan percuma untuk Windows yang menawarkan sokongan dan ciri bahasa yang dipertingkatkan.

Atas ialah kandungan terperinci Mengapakah \"cin\" Hanya Membaca Perkataan Pertama dalam C ?. 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