Mengapakah getline() Berkelakuan Tidak Dijangka dalam Gelung Selepas Menggunakan `>>`?

Barbara Streisand
Lepaskan: 2024-11-25 16:51:12
asal
250 orang telah melayarinya

Why Does getline() Behave Unexpectedly in a Loop After Using `>>`? 
>`? " />

getline() dan Input Console dalam C

Dalam C , fungsi getline() digunakan untuk mengekstrak baris teks daripada strim, biasanya konsol, bagaimanapun, apabila digunakan beberapa kali dalam satu gelung, ia mungkin berkelakuan tanpa diduga.

Masalah:
Apabila cuba mengumpul input pengguna menggunakan getline() untuk rentetan dan >> untuk integer dan beregu, pengguna tidak dapat memasukkan rentetan pertama Sebaliknya, kursor konsol melompat ke gesaan input seterusnya selepas getline() kedua panggilan.

Penjelasan:
Isu ini berpunca daripada pencampuran operator getline() dan >> aksara bukan ruang putih Walau bagaimanapun, ia meninggalkan aksara baris baharu (n) dalam strim input.

Apabila getline() dipanggil selepas >>, ia membaca aksara baris baharu sebagai rentetan kosong, mengakibatkan tingkah laku yang tidak diingini.

Penyelesaian:

  1. Gunakan Operator >> Secara konsisten: Jika semua input boleh diproses menggunakan >>, berpegang pada kaedah itu.
  2. Gunakan getline() Secara konsisten: Jika input melibatkan rentetan atau campuran jenis, gunakan getline() secara eksklusif dan huraikan nombor daripada rentetan yang diambil. Ini boleh dilakukan menggunakan aliran rentetan atau pustaka seperti Boost.
string line;
getline(cin, line);
int value = stoi(line); // Parse the number from the string
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah getline() Berkelakuan Tidak Dijangka dalam Gelung Selepas Menggunakan `>>`?. 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