缓冲区 cin() getline() getchar()
程序的輸入都建有一個(gè)緩沖區(qū),即輸入緩沖區(qū)。一次輸入過(guò)程是這樣的,當(dāng)一次鍵盤(pán)輸入結(jié)束時(shí)會(huì)將輸入的數(shù)據(jù)存入輸入緩沖區(qū),而cin函數(shù)直接從輸入緩沖區(qū)中取數(shù)據(jù)。正因?yàn)閏in函數(shù)是直接從緩沖區(qū)取數(shù)據(jù)的,所以有時(shí)候當(dāng)緩沖區(qū)中有殘留數(shù)據(jù)時(shí),cin函數(shù)會(huì)直接取得這些殘留數(shù)據(jù)而不會(huì)請(qǐng)求鍵盤(pán)輸入
一. cin>>
該操作符是根據(jù)后面變量的類(lèi)型讀取數(shù)據(jù)。
輸入結(jié)束條件 :遇到Enter、Space、Tab鍵。
對(duì)結(jié)束符的處理 :將\n類(lèi)似的結(jié)束符落在緩沖區(qū)里.
所以會(huì)有如下的程序和結(jié)果:
只輸入了一行abc, 然后回車(chē)后就輸出一行abc, 一行空
這是因?yàn)閏in在緩沖區(qū)里丟下的\n 給后面的getline()當(dāng)成輸入結(jié)束的標(biāo)志了
二.getline(cin, str)
輸入結(jié)束條件:Enter鍵
對(duì)結(jié)束符處理:將\n結(jié)束符從緩沖區(qū)里清除.
所以會(huì)有如下的程序
如果在輸入完abc后, 按兩次回車(chē), 就會(huì)有如下結(jié)果
三.getchar()
清除緩沖區(qū)里的\n , 建議用getchar(), 這種方式最方便.
四. 例子
先輸入一個(gè)整數(shù)到變量n里 ,然后讀入n行字符串, 注意用getchar()消除\n
來(lái)自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/gremount/p/5788691.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的缓冲区 cin() getline() getchar()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1.A+B Problem
- 下一篇: React Native ios打包