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();,這樣即可得到正確結果。