首頁 > 後端開發 > C++ > 為什麼使用'cin”後'getline”不提示輸入?

為什麼使用'cin”後'getline”不提示輸入?

Mary-Kate Olsen
發布: 2024-12-01 06:48:10
原創
596 人瀏覽過

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

getline 不提示輸入

在你的程式碼中,當你呼叫getline(cin, mystr); 時,程式無法提示用戶進行輸入。這是因為您之前使用 cin >> 時姓名;和cin>> i;,使用者在輸入回應後輸入的換行符號保留在輸入緩衝區中。

空格分隔

>>運算子以空格分隔。這表示當使用者輸入資料後按 Enter 鍵時,換行符號不會儲存在變數中,而是保留在輸入緩衝區中。

getline 的行為

getline 也是由空格分隔的。當您呼叫 getline 時,它會在輸入緩衝區中搜尋換行符。由於換行符號已經存在於緩衝區中,getline 會立即找到它要尋找的內容,並且不會提示使用者輸入。

解決方案

解決此問題,您可以使用以下方法之一:

  1. 呼叫忽略:
  2. 呼叫忽略:

呼叫忽略:

呼叫忽略:

之間使用>>和getline,呼叫cin.ignore() 從輸入緩衝區清除換行符。
#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;
}
登入後複製
只使用 getline: 不要使用 >>,而是對所有使用者輸入使用 getline。使用 stringstream 將字串輸入轉換為所需的資料類型。 改進的程式碼:這是專門使用 getline 的程式碼的改進版本:

以上是為什麼使用'cin”後'getline”不提示輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板