日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

C++中cin的返回值問題_C 語言

作者:林三撇 ? 更新時(shí)間: 2022-09-17 編程語言

cin的返回值

今天在用STL時(shí)用到while(cin>>s1>>a>>s2>>b)這樣的語句,本來所有的輸入都是“string+int+string+int”格式的,但是結(jié)束標(biāo)志卻是“quit”,于是很好奇cin的輸入到底是返回什么。

首先想到,cin是一個(gè)對(duì)象,那么到底是返回什么影響了while,查了很多博客才發(fā)現(xiàn)是操作符“>>”在起作用,這個(gè)操作符接收一個(gè)istream對(duì)象作為其做操作數(shù),接收一個(gè)對(duì)象作為其右操作數(shù)。

”>>”操作符返回其左操作數(shù)作為結(jié)果,這樣也就可以解釋為什么上面可以將個(gè)幾輸入操作合并了。

原因在于得到輸入后返回一個(gè)cin,接著可以繼續(xù)操作讀取了,而且在輸入不符合類型和EOF時(shí)停止。

輸入(cin)緩沖是行緩沖。

當(dāng)從鍵盤上輸入一串字符并按回車后,這些字符會(huì)首先被送到輸入緩沖區(qū)中存儲(chǔ)。

每當(dāng)按下回車鍵后,cin 就會(huì)檢測(cè)輸入緩沖區(qū)中是否有了可讀的數(shù)據(jù)。

cin流輸入的返回值問題

感覺今天發(fā)現(xiàn)一個(gè)比較好的問題

while(cin>>n)

這個(gè)語句肯定經(jīng)常看到把

但是

為什么可以用while來判斷呢

難道cin>>n的返回值是bool 類型?

這時(shí)候,看源碼 的 重要性就體現(xiàn)出來了

在ios里面有

    operator void *() const {
        if(state&(badbit|failbit) )
            return 0;
        return (void* )this;
    }

這樣一段代碼

再來看這樣一段文字

所以說 invalid state 時(shí) 返回值為0,否則是(void *)首地址

這樣就可以用while來判斷了

原文鏈接:https://blog.csdn.net/qq_34677945/article/details/69392223

欄目分類
最近更新