2 回答

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

TA貢獻1842條經驗 獲得超13個贊
一般是保證正確輸入的
假設 s是整形 那么輸入非整形的 字符 浮點 都會結束循環
cin的返回值 你可以試一下cout<<(cin>>s); 看下如果輸入不匹配類型的返回值 當返回值為0的時候 自然不執行if后面的語句了
另外 這種情況下 CTRL+Z也可以結束循環
添加回答
舉報