日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

cin 和 getline 混用中需要注意的问题

發(fā)布時(shí)間:2025/7/25 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cin 和 getline 混用中需要注意的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??? 這段時(shí)間在刷題過程中遇到一個(gè)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 }

??? 這是一段很簡單的測試代碼,結(jié)果應(yīng)該也是可以預(yù)期的,但結(jié)果仍然有些奇怪的地方

???

?

??? 這里沒有結(jié)果的輸出是怎么回事?

??? 我們先看下cin>>與getline的工作方式,流提取運(yùn)算符根據(jù)它后面的變量類型讀取數(shù)據(jù),從非空白符號開始,遇到Enter、Space、Tab鍵時(shí)結(jié)束。getline函數(shù)從istream中讀取一行數(shù)據(jù),當(dāng)遇到“\n”時(shí)結(jié)束返回。
??? 造成程序錯(cuò)誤結(jié)果的原因是,在輸入完相應(yīng)的數(shù)字后按回車結(jié)束輸入,把“\n”留在了輸入流里,而cin不會(huì)主動(dòng)刪除輸入流內(nèi)的換行符,這樣換行符就被getline讀取到,getline遇到換行符返回,程序不會(huì)等待下一個(gè)輸入,因此這里出現(xiàn)了一個(gè)沒有結(jié)果的輸出,getline讀入了cin之后的回車換行符。

?

??? 解決方案:

??? 手動(dòng)清除換行符,cin輸入結(jié)束后使用

cin.ignore();

??? 就可以有效解決這個(gè)問題。

?

總結(jié):

??? 在cin和getline混合使用的過程中,使用cin.ignore()清除輸入流中的換行符。

?

轉(zhuǎn)載于:https://www.cnblogs.com/moujun1001/p/9551561.html

總結(jié)

以上是生活随笔為你收集整理的cin 和 getline 混用中需要注意的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。