2 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
cin是C++編程語(yǔ)言中的標(biāo)準(zhǔn)輸入流對(duì)象,即istream類的對(duì)象。cin主要用于從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),這里的標(biāo)準(zhǔn)輸入,指的是終端的鍵盤。此外,cout是流的對(duì)象,即ostream類的對(duì)象,cerr是標(biāo)準(zhǔn)錯(cuò)誤輸出流的對(duì)象,也是ostream 類的對(duì)象。
這里的標(biāo)準(zhǔn)輸出指的是終端鍵盤,標(biāo)準(zhǔn)錯(cuò)誤輸出指的是終端的屏幕。
cin讀取數(shù)據(jù)也是從緩沖區(qū)中獲取數(shù)據(jù),緩沖區(qū)為空時(shí),cin的成員函數(shù)會(huì)阻塞等待數(shù)據(jù)的到來(lái),一旦緩沖區(qū)中有數(shù)據(jù),就觸發(fā)cin的成員函數(shù)去讀取數(shù)據(jù)。
當(dāng)cin>>從緩沖區(qū)中讀取數(shù)據(jù)時(shí),若緩沖區(qū)中第一個(gè)字符是空格、tab或換行這些分隔符時(shí),cin>>會(huì)將其忽略并清除,繼續(xù)讀取下一個(gè)字符,若緩沖區(qū)為空,則繼續(xù)等待。但是如果讀取成功,字符后面的分隔符是殘留在緩沖區(qū)的,cin>>不做處理。
擴(kuò)展資料
輸入緩沖是行緩沖。當(dāng)從鍵盤上輸入一串字符并按回車后,這些字符會(huì)首先被送到輸入緩沖區(qū)中存儲(chǔ)。每當(dāng)按下回車鍵后,cin.get() 就會(huì)檢測(cè)輸入緩沖區(qū)中是否有了可讀的數(shù)據(jù)。
cin.get() 還會(huì)對(duì)鍵盤上是否有作為流結(jié)束標(biāo)志的 Ctrl+Z 或者 Ctrl+D 鍵按下作出檢查,其檢查的方式有兩種:阻塞式以及非阻塞式。
阻塞式檢查方式指的是只有在回車鍵按下之后才對(duì)此前是否有 Ctrl+Z 組合鍵按下進(jìn)行檢查,非阻塞式樣指的是按下 Ctrl+D 之后立即響應(yīng)的方式。
如果在按 Ctrl+D 之前已經(jīng)從鍵盤輸入了字符,則 Ctrl+D的作用就相當(dāng)于回車,即把這些字符送到輸入緩沖區(qū)供讀取使用,此時(shí)Ctrl+D不再起流結(jié)束符的作用。如果按 Ctrl+D 之前沒(méi)有任何鍵盤輸入,則 Ctrl+D 就是流結(jié)束的信號(hào)。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
一般是保證正確輸入的
假設(shè) s是整形 那么輸入非整形的 字符 浮點(diǎn) 都會(huì)結(jié)束循環(huán)
cin的返回值 你可以試一下cout<<(cin>>s); 看下如果輸入不匹配類型的返回值 當(dāng)返回值為0的時(shí)候 自然不執(zhí)行if后面的語(yǔ)句了
另外 這種情況下 CTRL+Z也可以結(jié)束循環(huán)
添加回答
舉報(bào)