首頁 > 後端開發 > C++ > 為什麼在 C 讀取整數後 `getline()` 會跳過輸入?

為什麼在 C 讀取整數後 `getline()` 會跳過輸入?

DDD
發布: 2024-12-22 22:28:13
原創
303 人瀏覽過

Why Does `getline()` Skip Input After Reading an Integer in C  ?

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

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