華爲機試後才知道自己連輸入都不會處理

cin>>和getline混用需謹慎

https://blog.csdn.net/qq_42815188/article/details/89703173

https://www.cnblogs.com/zzzlight/p/12541729.html

我們先看下 cin>> 與 getline 的工作方式,流提取運算符根據它後面的變量類型讀取數據,從非空白符號開始,遇到 Enter、Space、Tab 鍵時結束。getline函數從istream中讀取一行數據,當遇到“\n”時結束返回。
造成程序錯誤結果的原因是,用戶輸入完年齡後按回車結束輸入,把“\n”留在了輸入流裏,而 cin 不會主動刪除輸入流內的換行符,這樣換行符就被 getline 讀取到,getline 遇到換行符返回,因此程序不會等待用戶輸入。
解決的辦法是手動清除換行符,在cin>>後加上 cin.ignore();,這樣即可得到正確結果。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章