C++中cin的返回值問題
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)??吹桨?/p>
但是
為什么可以用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來判斷了
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡(jiǎn)單了解C語言中主線程退出對(duì)子線程的影響
這篇文章主要介紹了簡(jiǎn)單了解C語言中主線程退出對(duì)子線程的影響,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12C語言數(shù)據(jù)結(jié)構(gòu)樹之后序遍歷的實(shí)現(xiàn)
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之后序遍歷的實(shí)現(xiàn)的相關(guān)資料,這里提供一個(gè)簡(jiǎn)單實(shí)例來實(shí)現(xiàn)后續(xù)遍歷,對(duì)于數(shù)據(jù)結(jié)構(gòu)樹的學(xué)習(xí)很有幫助,需要的朋友可以參考下2017-07-07VSCODE調(diào)試RDKit內(nèi)核的方法步驟(C++)
本文主要介紹了VSCODE調(diào)試RDKit內(nèi)核的方法步驟,這個(gè)過程可以分為三個(gè)部分:安裝 RDKit 所需環(huán)境,安裝 VSCode 相應(yīng)插件, 寫調(diào)試代碼編譯,感興趣的可以了解一下2021-08-08利用Matlab實(shí)現(xiàn)迭代適應(yīng)點(diǎn)算法
道格拉斯-普克算法(Douglas–Peucker?algorithm,亦稱為拉默-道格拉斯-普克算法、迭代適應(yīng)點(diǎn)算法、分裂與合并算法)是將曲線近似表示為一系列點(diǎn),并減少點(diǎn)的數(shù)量的一種算法。本文將利用Matlab實(shí)現(xiàn)這一算法,需要的可以參考一下2022-04-04詳談全排列next_permutation() 函數(shù)的用法(推薦)
下面小編就為大家?guī)硪黄斦勅帕衝ext_permutation() 函數(shù)的用法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03C標(biāo)準(zhǔn)庫<assert.h>的實(shí)現(xiàn)詳解
這篇文章主要介紹了C標(biāo)準(zhǔn)庫<assert.h>的實(shí)現(xiàn),主要包括了<assert.h>的基本概念、實(shí)現(xiàn)及用法等,需要的朋友可以參考下2014-09-09C語言實(shí)現(xiàn)飛機(jī)訂票系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)飛機(jī)訂票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12