C++下ctrl+z退出cin输入循环
ctrl+z 退出輸入的循環(huán)結(jié)構(gòu)
- 測(cè)試的語言及工具
- for循環(huán)
- while循環(huán)
- do while循環(huán)
- 進(jìn)一步探究ctrl+z在變量內(nèi)部儲(chǔ)存為什么
- 幾天后的繼續(xù)
測(cè)試的語言及工具
C++
visual studio 2017
for循環(huán)
這是我們學(xué)校上課提供的C++教材書(C++語言程序設(shè)計(jì)–劉瑞芳)上的例子,看得我一臉懵逼,于是進(jìn)行了這次測(cè)試
代碼如下
測(cè)試結(jié)果:
while循環(huán)
while循環(huán)里面總不能什么都不做吧,于是放了個(gè)cout<<i
代碼如下
測(cè)試結(jié)果:
結(jié)論:while可以通過ctrl+z結(jié)束循環(huán)
do while循環(huán)
first trying 失敗
代碼如下
測(cè)試結(jié)果:
結(jié)果分析
while(true)死循環(huán)
emmmm貌似不是真正原因,真正原因再與ctrl+z后卡死,不能輸入,也沒有結(jié)束,蒙圈
接下來查資料時(shí)間,查閱多方資料后發(fā)現(xiàn)一個(gè)很在理,ctrl+z結(jié)束輸入流,Ta說的其他的原因分析就懂不大起了
在另外一些人的資料中還發(fā)現(xiàn)個(gè)好東西,ctrl+z相當(dāng)于EOF(別人說的,自己測(cè)試了,非也)
也就是說之前的我并沒有理解到ctrl+z退出循環(huán)的精髓,其實(shí)是輸入后判斷ctrl+z(目前知識(shí)水平只允許我這樣理解 啊哈) 所以代碼應(yīng)該這樣寫:
second trying
代碼如下
測(cè)試結(jié)果:
回看for循環(huán)再分析
代碼
測(cè)試結(jié)果:
for循環(huán)中cin >> (a[i])的位置剛好在判斷退出循環(huán)的位置,所以能夠退出循環(huán)
回看while循環(huán)再分析
測(cè)試ctrl+z在變量中的值
代碼如下
測(cè)試結(jié)果:
結(jié)果分析
輸出有點(diǎn)奇怪,不急,看樣子有點(diǎn)像隨機(jī)數(shù),可以先初始化一下數(shù)組的值全部為6(隨便的啦)
測(cè)試結(jié)果:
emmmm出了點(diǎn)意外,不急,最后一招,visual studio調(diào)試界面局部變量窗口查看局部變量的值
基礎(chǔ)不牢地動(dòng)山搖啊,這樣初始化只會(huì)把a(bǔ)[0]初始化為6,其余為0,這下原因就對(duì)了
ctrl+z并不會(huì)cin到變量
進(jìn)一步探究ctrl+z在變量內(nèi)部儲(chǔ)存為什么
cin >> intA方式
代碼如下
測(cè)試結(jié)果:
結(jié)果分析
為隨機(jī)數(shù),證明沒有真正輸入進(jìn)去
cin >> charA方式
代碼如下
測(cè)試結(jié)果:
結(jié)果分析
空白 呃 這就沒辦法了visual studio調(diào)試走一波
原來還是沒有輸進(jìn)去
intA = cin.get() 方式
代碼如下
int value;value=cin.get();cout << value << endl;測(cè)試結(jié)果:
出乎意料的結(jié)果
再試一下如果是char類型的會(huì)是怎樣的結(jié)果
代碼如下
測(cè)試結(jié)果:
空白?? 這就沒辦法了,emmm今天先試到這里,書屋要關(guān)門了 …
幾天后的繼續(xù)
前幾天這個(gè)cin讀入ctrl+z又出了幺蛾子
代碼如下
輸入ctrl+z后死循環(huán),然后呆了幾天沒有進(jìn)展
直到看了另外一本參考書
試了一下cin.get(ch)
代碼如下
一下就正常退出循環(huán)了。
看了一下書上的解釋,說是cin將輸入流狀態(tài)碼設(shè)置成了failbit
感覺更像是將cin狀態(tài)碼設(shè)置成了eofbit,但在看到源碼之前這些都是我的個(gè)人猜測(cè)吧
至于為什么一個(gè)能退出循環(huán)一個(gè)不能,我想原因在于一個(gè)判斷字符存的值(vs調(diào)試局部變量窗口下顯示此時(shí)ASCII碼值為-1,奇怪), 一個(gè)判斷cin的直接返回值或許在強(qiáng)制類型轉(zhuǎn)換時(shí),出了問題吧
總結(jié)
以上是生活随笔為你收集整理的C++下ctrl+z退出cin输入循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中带参数的try(){}语法含义
- 下一篇: kafka消费者组概念