getline 不提示輸入
在你的程式碼中,當你呼叫getline(cin, mystr); 時,程式無法提示用戶進行輸入。這是因為您之前使用 cin >> 時姓名;和cin>> i;,使用者在輸入回應後輸入的換行符號保留在輸入緩衝區中。
空格分隔
>>運算子以空格分隔。這表示當使用者輸入資料後按 Enter 鍵時,換行符號不會儲存在變數中,而是保留在輸入緩衝區中。
getline 的行為
getline 也是由空格分隔的。當您呼叫 getline 時,它會在輸入緩衝區中搜尋換行符。由於換行符號已經存在於緩衝區中,getline 會立即找到它要尋找的內容,並且不會提示使用者輸入。
解決方案
解決此問題,您可以使用以下方法之一:
呼叫忽略:
呼叫忽略:
之間使用>>和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; }
以上是為什麼使用'cin”後'getline”不提示輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!