Gelagat Strim Input C dengan "cin"
Apabila membaca input menggunakan strim "cin" dalam C , adalah penting untuk memahami cara ia berinteraksi dengan pelbagai jenis data. Secara lalai, "cin" membaca perkataan pada satu masa, yang boleh membawa kepada tingkah laku yang tidak dijangka apabila berurusan dengan tatasusunan aksara atau rentetan.
Dalam contoh kod yang disediakan, kaedah "input()" dalam "String " kelas menggunakan "cin >> untuk membaca rentetan input. Walau bagaimanapun, pernyataan ini hanya menangkap satu perkataan, mengabaikan sebarang perkataan berikutnya dalam input. Akibatnya, apabila input mengandungi berbilang perkataan, seperti "steve hawking," hanya perkataan pertama, "steve," disimpan dalam tatasusunan "str".
Penyelesaian: Menggunakan getline( ) untuk Membaca Baris Lengkap
Untuk membaca baris lengkap input ke dalam tatasusunan aksara, fungsi "getline()" boleh digunakan dan bukannya "cin >>". Berikut ialah kaedah input yang dikemas kini menggunakan "getline()":
<code class="c++">void input() { cout << "Enter string :"; cin.getline(str, sizeof str); }
"getline()" mengambil dua argumen: penunjuk ke tatasusunan destinasi dan saiz tatasusunan. Ia membaca input sehingga aksara baris baharu ditemui, menangkap keseluruhan baris input dengan berkesan.
Pertimbangan Tambahan
Perlu diperhatikan bahawa menggunakan tatasusunan aksara untuk manipulasi rentetan boleh menyusahkan dan terdedah kepada kesilapan. Perpustakaan Standard C menyediakan kelas "std::string", yang menawarkan pendekatan yang lebih mantap dan selamat jenis untuk pengendalian rentetan. Daripada menggunakan tatasusunan aksara, kod itu boleh ditulis semula sebagai:
<code class="c++">#include <iostream> #include <string> class String { public: std::string str; void input() { cout << "Enter string :"; std::getline(std::cin, str); } void display() { std::cout << str; } };</code>
Akhir sekali, penggunaan fail pengepala seperti "iostream.h" dan "conio.h" sudah lapuk. Pembangunan C moden harus menggunakan fail pengepala seperti "iostream" dan "conio", masing-masing.
Atas ialah kandungan terperinci Bagaimanakah `cin` mengendalikan input dalam C dan mengapakah `getline()` diutamakan untuk membaca keseluruhan baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!