Input selamat dalam C ++

Dalam program anda, mungkin diperlukan untuk meminta maklumat dari pengguna. Dalam C ++ maklumat dikumpulkan menggunakan objek "cin". Jika anda tidak mengecas input ini, maka program anda mungkin menjadi mangsa "limpahan penyangga". Sesungguhnya, jika bilangan watak yang dimasukkan melebihi saiz penampan yang asalnya dirancang, maka data terakhir menimpa data lain pada timbunan, dan data yang salah mempengaruhi register ESP dan EBP.

Anda boleh mendapatkan input data ini dengan cara yang berbeza.

Menggunakan kaedah get ()

 #include int main () {char texte [100]; cin.get (texte, 100); // paramètre utama: la où va la saisie second: taille max de saisie return 0; } 

Contoh ini menggambarkan penggunaan cin.get.

Jika teks yang dimasukkan melebihi saiz yang diperuntukkan, aksara tambahan diabaikan.

Menggunakan kaedah "getline ()"

Kaedah ini berfungsi seperti get (), tetapi ia menghilangkan watak pada akhir penampan.

Sesungguhnya, untuk mengesahkan teks, pengguna menekan kekunci "Enter", yang sepadan dengan aksara ' \ n '.

getline () menghilangkan watak ini.

== Ia tidak berfungsi !! ===

Berikut adalah kod yang tidak berfungsi dengan betul:

 #include menggunakan ruang nama std; int main () {char entree [100]; int choix; cout <> choix; cout << "Entrez un texte:"; cin.get (texte, 100); cout << "Saisies terminées!"; kembali 0; } 

Sesungguhnya entri kedua tidak dilaksanakan, dan mesej "Input selesai! / Saisies terminées!" "Muncul.

Bagaimana untuk menyelesaikan masalah ini?

Anda mesti menggunakan kaedah " ignore () ".

Kaedah mengabaikan ()

Kaedah ini membolehkan mengabaikan aksara tertentu dalam rentetan.

 #include menggunakan ruang nama std; int main () {char entree [100]; int choix; cout <> choix; cout << "Entrez un texte:"; cin.ignore (1, '\ n'); // mengabaikan le caractère d'entrée, qui validait auparavant la saisie. cin.get (texte, 100); cout << "Saisies terminées!"; kembali 0; 

Dengan kaedah ini, watak input diabaikan, dan masalah diselesaikan.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama