Rumah > pembangunan bahagian belakang > C++ > Mengapakah `cin.ignore()` Penting untuk Input Rentetan yang Betul Selepas Input Berangka dalam C ?

Mengapakah `cin.ignore()` Penting untuk Input Rentetan yang Betul Selepas Input Berangka dalam C ?

Susan Sarandon
Lepaskan: 2024-12-10 18:16:12
asal
562 orang telah melayarinya

Why Is `cin.ignore()` Crucial for Correct String Input After Numerical Input in C  ?

Merungkai Enigma cin.ignore() dalam C

Apabila berinteraksi dengan pengguna dalam program C, senario yang tidak dijangka seperti melangkau input rentetan boleh timbul. Panggilan cin.ignore() yang kelihatan tidak berbahaya memegang kunci untuk menyelesaikan isu yang membingungkan seperti itu.

Mengapa cin.ignore() Penting

Apabila pengguna memasukkan nombor diikuti dengan rentetan, menekan kekunci Enter memasukkan aksara baris baharu ('n') ke dalam penimbal input. Selepas itu, cin >> bilangan; menggunakan nombor tetapi meninggalkan aksara 'n' dalam penimbal. Apabila cin.ignore() tiada, cin >> getline(cin, mystr); membaca aksara 'n' secara tidak sengaja dan bukannya input rentetan.

Fungsi cin.ignore() menyelesaikan masalah ini dengan mengabaikan bilangan aksara tertentu (256 dalam contoh kami) atau sehingga ia menemui pembatas (' n' dalam kes ini).

Meramalkan Keperluan untuk cin.ignore()

Ramalan apabila cin.ignore() diperlukan melibatkan pemahaman tentang potensi aksara tertinggal dalam penimbal input. Situasi di mana ia menjadi penting termasuk:

  • Selepas membaca nombor (cth., cin >> num;)
  • Apabila input seterusnya ialah rentetan (cth., cin >> getline(cin, mystr);)
  • Apabila input disertakan aksara bukan pembatas yang boleh diserap semula secara tidak sengaja

Contoh: Menyelidiki Kod

Pertimbangkan program C yang disediakan:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double num;
    string mystr;

    cout << "Please enter a number: " << endl;
    cin >> num;
    cout << "Your number is: " << num << endl;
    cin.ignore(256, '\n'); // Ignore any remaining characters
    cout << "Please enter your name: \n";
    getline (cin, mystr);
    cout << "So your name is " << mystr << "? \n";
    cout << "Have a nice day. \n";

}
Salin selepas log masuk

Memasukkan panggilan cin.ignore() selepas cin >> bilangan; memastikan bahawa aksara 'n' diabaikan, membenarkan cin >> getline(cin, mystr); untuk membaca input rentetan dengan betul.

Atas ialah kandungan terperinci Mengapakah `cin.ignore()` Penting untuk Input Rentetan yang Betul Selepas Input Berangka 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