getline() 的輸入問題
在C 程式中,使用getline() 讀取使用者輸入時可能會遇到奇怪的行為。具體來說,如果您要求輸入整數,請在其後輸入 getline(cin, str),然後輸入另一個整數,您會注意到在輸入「str」之前會出現「輸入帳號」。
發生這種情況是因為 getline() 也捕獲在第一個整數之後輸入的換行符。為了避免這種情況,您可以指示 cin 在讀取“str”之前跳過空格。具體方法如下:
cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin.ignore(numeric_limits<streamsize>::max(), '\n'); getline(cin, str);
此處,cin.ignore() 在 getline() 讀取使用者輸入之前跳過任何空格,包括換行符。
或者,您可以使用cin.get () 明確讀取並丟棄換行符:
cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin.get(); getline(cin, str);
這種方法確保換行符被消耗,並且getline() 不會嘗試讀取它。
以上是為什麼在 C 讀取整數後 `getline()` 會跳過輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!