Rumah > pembangunan bahagian belakang > C++ > Mengapakah \'cin\' Hanya Membaca Perkataan Pertama dalam C ?

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

Mary-Kate Olsen
Lepaskan: 2024-10-30 16:19:03
asal
816 orang telah melayarinya

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

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

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!

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