C 中的getline() :處理行緩衝
在C 中,getline() 用於從標準輸入流cin 讀取輸入直到遇到換行符號。但是,當在請求使用者輸入的程式中使用時,可能會導致意外行為。
考慮以下程式碼片段:
int number; string str; int accountNumber; cout << "Enter number:"; cin >> number; cout << "Enter name:"; getline(cin, str); cout << "Enter account number:"; cin >> accountNumber;
執行此程式時,您可能會注意到輸入第一個號碼後,程式立即提示您輸入帳號,而不等待您輸入姓名。這是因為 getline() 從輸入緩衝區讀取剩餘的換行符號。
要避免此問題,可以在 getline() 之前使用 std::ws (whitespace) 來跳過輸入緩衝區中的所有空白和換行符。輸入流。這可確保 getline() 從下一個非空白字元讀取輸入:
cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin >> ws; getline(cin, str); ...
透過合併此步驟,程式將在繼續下一個輸入之前正確提示您輸入姓名。
以上是為什麼 C 中的 `getline()` 有時會跳過使用者輸入,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!