解開C 中cin.ignore() 之謎
在C 程式中與使用者互動時,可能會出現意外狀況,例如跳過字串輸入出現。看似無害的 cin.ignore() 呼叫是解決如此令人困惑的問題的關鍵。
為什麼cin.ignore() 至關重要
當使用者輸入數字時後跟一個字串,按Enter 鍵會將換行符('n') 插入輸入緩衝區。隨後,cin>>數量;消耗數字但將「n」字元保留在緩衝區中。當 cin.ignore() 不存在時,cin >>>取得行(cin,mystr);無意中讀取了「n」字元而不是字串輸入。
cin.ignore() 函數透過忽略指定數量的字元(在我們的範例中為 256)或直到遇到分隔符號('在這種情況下)。
預測需要cin.ignore()
預測何時需要 cin.ignore() 需要了解輸入緩衝區中剩餘字元的可能性。它變得至關重要的情況包括:
範例:深入研究程式碼
考慮提供的C 程序:
#include <iostream> #include <string> using namespace std; int main() { double num; string mystr; cout << "Please enter a number: " << endl; cin >> num; cout << "Your number is: " << num << endl; cin.ignore(256, '\n'); // Ignore any remaining characters cout << "Please enter your name: \n"; getline (cin, mystr); cout << "So your name is " << mystr << "? \n"; cout << "Have a nice day. \n"; }
插入cin.ignore( ) 在cin之後調用 >>數量;確保忽略“n”字符,從而允許後續的 cin >>獲取行(cin,mystr);正確讀取字符串輸入。
以上是為什麼「cin.ignore()」對於 C 中數字輸入後正確的字串輸入至關重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!