成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c++中cin如何作為while條件

這篇文章給大家分享的是有關(guān)c++中cin如何作為while條件的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的威遠(yuǎn)網(wǎng)站建設(shè)公司,威遠(yuǎn)接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行威遠(yuǎn)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

本文一切測(cè)試在windows clion中進(jìn)行

在clion中,ctrl +z并不是文件結(jié)束符

在cmd中運(yùn)行,只需要ctrl+z再加回車(chē)就可以得到正確結(jié)果

1、cin

cin是C++編程語(yǔ)言中的標(biāo)準(zhǔn)輸入流對(duì)象,即istream類(lèi)的對(duì)象。cin主要用于從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),這里的標(biāo)準(zhǔn)輸入,指的是終端的鍵盤(pán)。此外,cout是流的對(duì)象,即ostream類(lèi)的對(duì)象,cerr是標(biāo)準(zhǔn)錯(cuò)誤輸出流的對(duì)象,也是ostream 類(lèi)的對(duì)象。這里的標(biāo)準(zhǔn)輸出指的是終端鍵盤(pán),標(biāo)準(zhǔn)錯(cuò)誤輸出指的是終端的屏幕。

在理解cin功能時(shí),不得不提標(biāo)準(zhǔn)輸入緩沖區(qū)。當(dāng)我們從鍵盤(pán)輸入字符串的時(shí)候需要敲一下回車(chē)鍵才能夠?qū)⑦@個(gè)字符串送入到緩沖區(qū)中,那么敲入的這個(gè)回車(chē)鍵(\r)會(huì)被轉(zhuǎn)換為一個(gè)換行符\n,這個(gè)換行符\n也會(huì)被存儲(chǔ)在cin的緩沖區(qū)中并且被當(dāng)成一個(gè)字符來(lái)計(jì)算!比如我們?cè)阪I盤(pán)上敲下了123456這個(gè)字符串,然后敲一下回車(chē)鍵(\r)將這個(gè)字符串送入了緩沖區(qū)中,那么此時(shí)緩沖區(qū)中的字節(jié)個(gè)數(shù)是7 ,而不是6。

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>>不做處理。

使用一個(gè)istream的對(duì)象作為條件時(shí),效果是檢查流的狀態(tài)。若流有效,則檢測(cè)成功,返回true。當(dāng)遇到文件結(jié)束符或者無(wú)效的輸入(比如用一個(gè)字符來(lái)作為一個(gè)整型數(shù)的輸入時(shí)),istream的對(duì)象狀態(tài)會(huì)變?yōu)闊o(wú)效。

總而言之:

(1)  輸入數(shù)據(jù)時(shí)需要敲回車(chē)鍵才能將數(shù)據(jù)送到緩存器,cin才能讀取緩存區(qū)的數(shù)據(jù)。

(2) 當(dāng)cin遇到文件結(jié)束符(windows中為:ctrl +Z , Unix 中為:ctrl +D),或無(wú)效輸入才能使cin狀態(tài)無(wú)效。

一下這段測(cè)試代碼將說(shuō)明以上問(wèn)題。

代碼作用: 統(tǒng)計(jì)輸入值中數(shù)據(jù)連續(xù)出現(xiàn)的次數(shù)。

因?yàn)闊o(wú)法判斷輸入數(shù)據(jù)的個(gè)數(shù),所以無(wú)法采用一個(gè)定值來(lái)控制循環(huán)次數(shù)。這里我們使用cin來(lái)作為if 條件:

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {

  cout << "Enter a list of integers:" << std::endl;
  int currVal = 0;
  int val = 0;
  int cnt = 0;

  /*讀入第一個(gè)輸入的數(shù)據(jù)*/
  if ( cin >> currVal ){
    cnt = 1;
    /*循環(huán)讀入之后的數(shù)據(jù)*/
    while( cin >> val ){
      /*如果當(dāng)前讀入的數(shù)據(jù)val與之前的數(shù)據(jù)currVal相等,cnt++*/
      if (currVal == val) {
        ++cnt;
      } else {
        /*如果不相等,輸出之前數(shù)據(jù)currVal連續(xù)出現(xiàn)的次數(shù),同時(shí)重新統(tǒng)計(jì)當(dāng)前數(shù)據(jù)的連續(xù)出現(xiàn)次數(shù)*/
        cout << currVal << " occurs " << cnt << " times. " << endl;
        currVal = val;
        cnt = 1;
      }
    }
     /*打印最后一個(gè)數(shù)據(jù)的連續(xù)出現(xiàn)次數(shù)*/
    cout << currVal << " occurs " << cnt << " times. " << endl;
  }
  return 0;
}

(1)控制臺(tái)輸入 1 2 3 4 5 6 7加回車(chē):

c++中cin如何作為while條件

7的統(tǒng)計(jì)并沒(méi)有顯示,因?yàn)檫@個(gè)時(shí)候我們只是將數(shù)據(jù)push到了緩沖區(qū),while中的cin讀取到7,流的檢測(cè)狀態(tài)是true,所以并沒(méi)有退出循環(huán),還在等待下一個(gè)輸入數(shù)據(jù),不能執(zhí)行while循環(huán)之外的代碼,因此不能打印最后下一個(gè)數(shù)據(jù)7。

(2)控制臺(tái)輸入 1 2 3 4 5 6 7加ctrl+D:

c++中cin如何作為while條件

 直接以ctrl+d結(jié)束數(shù)據(jù),數(shù)據(jù)1到7沒(méi)有提交到緩沖區(qū),而if中的cin直接讀取到文件結(jié)束符,流狀態(tài)檢測(cè)為false,if中的代碼不能執(zhí)行,直接結(jié)束程序運(yùn)行。

(3)控制臺(tái)輸入1 2 3 4 5 6 7加回車(chē):

再輸入ctrl+D:

c++中cin如何作為while條件

1到6的輸出如(2)中所述,等我們?cè)俅屋斎胛募Y(jié)束符號(hào)時(shí),cin流狀態(tài)為false,結(jié)束while循環(huán),因此執(zhí)行while循環(huán)之外的代碼,打印出最后一個(gè)數(shù)據(jù)7 的統(tǒng)計(jì)次數(shù)。

(4)控制臺(tái)輸入1 2 3 4 5 6 7 t 加回車(chē):

c++中cin如何作為while條件

我們輸入1到7和t之后,再enter,將數(shù)據(jù)push到緩沖區(qū)。在while循環(huán)的條件中,cin逐個(gè)讀入到val中,再執(zhí)行循環(huán)體中的代碼,最后讀到t時(shí),企圖將字符存入到int型的變量中,無(wú)效輸入導(dǎo)致流狀態(tài)為false,種植while循環(huán),可以打印出最后一個(gè)數(shù)據(jù)的統(tǒng)計(jì)信息。

感謝各位的閱讀!關(guān)于“c++中cin如何作為while條件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

新聞標(biāo)題:c++中cin如何作為while條件
URL鏈接:http://jinyejixie.com/article36/ipjhsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、用戶(hù)體驗(yàn)網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)公司、微信小程序、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
东乡| 荆门市| 东方市| 平顶山市| 玛曲县| 绥滨县| 清远市| 泾源县| 彭水| 观塘区| 新河县| 申扎县| 工布江达县| 修文县| 威海市| 柳林县| 工布江达县| 贡嘎县| 叙永县| 霍邱县| 永登县| 长兴县| 聂拉木县| 济南市| 万荣县| 通城县| 西宁市| 夏津县| 南澳县| 莎车县| 托里县| 涿鹿县| 保德县| 红原县| 乐山市| 洱源县| 陕西省| 水富县| 西林县| 三台县| 蛟河市|