"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!