Rumah > pembangunan bahagian belakang > C++ > Mengapakah `getline` tidak meminta Input Selepas Menggunakan `cin`?

Mengapakah `getline` tidak meminta Input Selepas Menggunakan `cin`?

Mary-Kate Olsen
Lepaskan: 2024-12-01 06:48:10
asal
664 orang telah melayarinya

Why Doesn't `getline` Prompt for Input After Using `cin`?

getline Not Prompting for Input

Dalam kod anda, apabila anda memanggil getline(cin, mystr);, program gagal untuk menggesa pengguna untuk input. Ini kerana apabila anda sebelum ini menggunakan cin >> nama; dan cin >> i;, aksara baris baharu yang dimasukkan pengguna selepas menaip respons mereka ditinggalkan dalam penimbal input.

Penempadanan Ruang Putih

Perihal >> operator dihadkan ruang putih. Ini bermakna apabila pengguna menekan kekunci Enter selepas memasukkan data, aksara baris baharu tidak disimpan dalam pembolehubah tetapi kekal dalam penimbal input.

Gelagat getline

getline juga dihadkan ruang putih. Apabila anda memanggil getline, ia mencari penimbal input untuk aksara baris baharu. Memandangkan watak baris baharu sudah ada dalam penimbal, getline menemui perkara yang dicarinya serta-merta dan tidak menggesa pengguna untuk input.

Penyelesaian

Untuk menyelesaikan isu ini , anda boleh menggunakan salah satu kaedah berikut:

  1. Abaikan panggilan: Antara menggunakan >> dan getline, panggil cin.ignore() untuk mengosongkan aksara baris baharu daripada penimbal input.
  2. Gunakan getline Secara Eksklusif: Daripada menggunakan >>, gunakan getline untuk semua input pengguna. Gunakan aliran rentetan untuk menukar input rentetan kepada jenis data yang diingini.

Kod Dipertingkat:

Berikut ialah versi kod anda yang diperbaik yang menggunakan getline secara eksklusif:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    string name;
    int age;
    float price;

    cout << "Hello World!" << endl;
    cout << "What is your name? ";
    getline(cin, name);
    cout << "Hello " << name << endl;
    cout << "How old are you? ";
    getline(cin, age);
    cout << "Wow " << age << endl;

    cout << "How much is that jacket? ";
    getline(cin, price);
    stringstream(price) >> price;
    cout << price << endl;
    system("pause");

    return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah `getline` tidak meminta Input Selepas Menggunakan `cin`?. 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