首頁 > 後端開發 > C++ > 為什麼 C 中的 `getline()` 有時會跳過使用者輸入,如何修復它?

為什麼 C 中的 `getline()` 有時會跳過使用者輸入,如何修復它?

Mary-Kate Olsen
發布: 2024-12-09 07:42:08
原創
472 人瀏覽過

Why Does `getline()` in C   Sometimes Skip User Input, and How Can I Fix It?

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中文網其他相關文章!

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