Rumah >pembangunan bahagian belakang >C++ >Mengapa Mencampurkan Operator `getline` dan `>>` Menyebabkan Peninggalan Input dalam C ?

Mengapa Mencampurkan Operator `getline` dan `>>` Menyebabkan Peninggalan Input dalam C ?

DDD
DDDasal
2024-11-29 15:13:10911semak imbas

Why Does Mixing `getline` and `>>` Operator Menyebabkan Peninggalan Input dalam C ?
>` Operator Menyebabkan Peninggalan Input dalam C ? " />

Mencampurkan getline dan Operator>> Menyebabkan Kelalaian Input

Kod ini menghadapi masalah semasa cuba mendapatkan input pengguna untuk harga jaket menggunakan getline. Walaupun menggesa pengguna, input tidak dikumpul, dan nilai awal "0" sebaliknya digunakan.

Masalah asas terletak pada gabungan operator >> dan penggunaan getline Apabila menggunakan operator>>, data pengguna dimasukkan, diikuti dengan kekunci Enter, yang memasukkan aksara baris baharu. penampan input Walau bagaimanapun, operator>> dipisahkan ruang putih, bermakna aksara baris baharu tidak diberikan kepada pembolehubah dan kekal dalam penimbal.

Seterusnya, apabila getline dipanggil, ia segera mencari aksara baris baharu dalam penimbal, memenuhi kriteria cariannya, tanpa menggesa pengguna untuk input.

Penyelesaian

Untuk menyelesaikan isu ini, pertimbangkan perkara berikut pilihan:

  1. Gunakan abaikan atau Dummy Call untuk mendapatkan talian: Panggil abaikan atau lakukan panggilan getline tiruan untuk menghapuskan aksara baris baharu daripada penimbal selepas menggunakan operator>>.
  2. Gunakan getline secara eksklusif: Hapuskan operator>> dan hanya bergantung pada getline. Kemudian, tukar rentetan anda kepada jenis data yang diingini menggunakan fungsi seperti stoi atau stod untuk integer dan beregu, masing-masing. Pendekatan ini meningkatkan kestabilan dan keteguhan kod.

Atas ialah kandungan terperinci Mengapa Mencampurkan Operator `getline` dan `>>` Menyebabkan Peninggalan Input 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