Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Utama Antara `std::cin` dan `std::cin.getline()` dalam C ?

Apakah Perbezaan Utama Antara `std::cin` dan `std::cin.getline()` dalam C ?

DDD
DDDasal
2024-12-08 04:36:13223semak imbas

What's the Key Difference Between `std::cin` and `std::cin.getline()` in C  ?

Memahami Perbezaan Antara std::cin.getline() dan std::cin

Apabila bekerja dengan input dan output dalam C , adalah penting untuk memahami nuansa antara std::cin.getline() dan std::cin. Walaupun kedua-duanya tergolong dalam objek input standard std::cin, ia mempunyai tujuan yang berbeza dan mengendalikan input secara berbeza.

std::cin.getline()

Mari kita membedah std::cin.getline(). Ruang nama std:: menempatkan koleksi luas perpustakaan standard jenis, fungsi dan objek. std::cin ialah satu objek sedemikian yang mewakili input aksara standard. Ia menawarkan kaedah dan fungsi untuk mengekstrak aksara daripada input standard.

std::cin.getline() ialah kaedah std::cin yang mendapatkan semula baris aksara daripada objek di sebelah kirinya (di sini, std ::cin). Ia terus membaca aksara sehingga ia menemui aksara baris baharu (n), mencapai bilangan maksimum aksara yang ditentukan atau kehabisan input.

std::cin vs. std::cin.getline( )

Perbezaan utama antara std::cin dan std::cin.getline() terletak pada cara mereka mengendalikan ruang putih dan aksara baris baharu:

  • std::cin: Secara lalai, std::cin melangkau ruang putih di hadapan (ruang, tab, dll.) dan berhenti membacanya pada aksara ruang putih pertama ia pertemuan.
  • std::cin.getline(): Sebaliknya, std::cin.getline() membaca dan memasukkan semua aksara sehingga aksara baris baharu (n) ditemui. Ini bermakna ia membaca keseluruhan baris teks dengan berkesan, termasuk aksara ruang putih.

Contoh Penggunaan

Memahami perbezaan ini menjadi penting apabila bekerja dengan rentetan dan input yang mungkin sertakan ruang atau pemisah baris. Contohnya:

string name;
int age;

// Read a single word from std::cin
std::cin >> name; // Suppose John

// Read the next line of input
std::string line;
std::getline(std::cin, line); // Suppose "is 25 years old"

// Extract the age from the line
age = std::stoi(line.substr(line.find("is") + 3, line.find("years") - 5)); // Extract "25"

Dalam contoh ini, kami menggunakan std::cin untuk membaca satu perkataan (nama), kemudian gunakan std::cin.getline() untuk membaca keseluruhan baris berikut. Ambil perhatian bahawa jika kami telah menggunakan std::cin untuk membaca baris yang mengandungi umur, ia hanya akan mengekstrak "25" tanpa teks di sekelilingnya.

Kesimpulan

Memahami perbezaan antara std::cin.getline() dan std::cin adalah amat diperlukan apabila berurusan dengan input yang termasuk ruang putih atau pemisah baris. Dengan memahami gelagat mereka yang berbeza, pembangun boleh mendapatkan semula bahagian input tertentu secara berkesan dan mengelakkan kemungkinan kekaburan dalam pemprosesan data.

Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara `std::cin` dan `std::cin.getline()` 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