cin 和 getline 混用中需要注意的问题
生活随笔
收集整理的這篇文章主要介紹了
cin 和 getline 混用中需要注意的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 這段時間在刷題過程中遇到一個cin和getline混合使用中的問題,解決之后記錄如下:
?
??? 先來看一段代碼
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() { 6 string str; 7 int n = 0; 8 cin >> n; 9 cout << "num: " << n << endl; 10 while (n--) { 11 getline(cin, str); 12 cout << "string: " << str << endl; 13 } 14 15 return 0; 16 }??? 這是一段很簡單的測試代碼,結果應該也是可以預期的,但結果仍然有些奇怪的地方
???
?
??? 這里沒有結果的輸出是怎么回事?
??? 我們先看下cin>>與getline的工作方式,流提取運算符根據它后面的變量類型讀取數據,從非空白符號開始,遇到Enter、Space、Tab鍵時結束。getline函數從istream中讀取一行數據,當遇到“\n”時結束返回。
??? 造成程序錯誤結果的原因是,在輸入完相應的數字后按回車結束輸入,把“\n”留在了輸入流里,而cin不會主動刪除輸入流內的換行符,這樣換行符就被getline讀取到,getline遇到換行符返回,程序不會等待下一個輸入,因此這里出現了一個沒有結果的輸出,getline讀入了cin之后的回車換行符。
?
??? 解決方案:
??? 手動清除換行符,cin輸入結束后使用
cin.ignore();??? 就可以有效解決這個問題。
?
總結:
??? 在cin和getline混合使用的過程中,使用cin.ignore()清除輸入流中的換行符。
?
轉載于:https://www.cnblogs.com/moujun1001/p/9551561.html
總結
以上是生活随笔為你收集整理的cin 和 getline 混用中需要注意的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux服务器防火墙白名单设置
- 下一篇: 【Python+selenium Wen