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
Susan Sarandonasal
2024-12-10 18:16:12614semak imbas

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

}

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!

Kenyataan:
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