cin中函式的作用(第5章)

2021-06-23 07:02:57 字數 1541 閱讀 3121

cin是istream類的物件,它是從標準輸入裝置(鍵盤)獲取資料,程式中的變數通過流提取符">>"從流中提取資料。流提取符">>"從流中提取資料時跳過輸入流中的空格、tab鍵、換行符等空白字元。注意:只有在輸入完資料再按回車鍵後,該行資料才被送入鍵盤快取區,形成輸入流,提取運算子">>"才能從中提取資料。需要注意保證從流中讀取資料能正常執行。

例如:   int a,b;

cin>>a>>b;   

若從鍵盤中輸入21 abc回車,變數a從輸入流中提取整數21,提取操作成功,此時cin流出於正常狀態。但在變數b準備提取乙個整數時,遇到了字母a,顯然提取操作失敗了,此時,cin流被置為出錯狀態。只有在正常狀態,才能從輸入流中提取資料。

字元輸入的流成員函式

除了可以用cin輸入標準型別的資料外,還可以用istream類流物件的一些成員函式,實現字元的輸入。如cin.get(),cin.getline(字元陣列(或字元指標),字元個數n,終止標誌字元)

eof函式

eof是end of file 的縮寫,表示「檔案結束」。從輸入流讀取資料,如果到達檔案末尾(遇到檔案結束符),eof函式值為非零值(表示真),否則為0(表示假)。

cin.eof()返回流結束位,即按鍵 ctrl 和 z 鍵

如:char gc;

while(!cin.eof()) //直至按ctrl+z鍵退出!

二、cin.ignore(a,ch)

從輸入流(cin)中提取字元,提取的字元被忽略(ignore),不被使用。每拋棄乙個字元,它都要計數和比較字元:如果計數值達到a或者被拋棄的字元是ch,則cin.ignore()函式執行終止;否則,它繼續等待。

它的乙個常用功能就是用來清除以回車結束的輸入緩衝區的內容,消除上一次輸入對下一次輸入的影響。

比如可以這麼用:

cin.ignore(1024,'\n'),通常把第乙個引數設定得足夠大,這樣實際上總是只有第二個引數'\n'起作用,所以這一句就是把回車(包括回車)之前的所以字元從輸入緩衝(流)中清除出去。

三、cin.sync()和cin.ignor()的比較

sync()的作用就是清除輸入緩衝區。成功時返回0,失敗時badbit會置位,函式返回-1.

另外,對於繫結了輸出的輸入流,呼叫sync(),還會重新整理輸出緩衝區。

但由於程式執行時並不總是知道外部輸入的進度,很難控制是不是全部清除輸入緩衝區的內容。通常我們有可能只是希望放棄輸入緩衝區中的一部分,而不是全部。比如清除掉當前行、或者清除掉行尾的換行符等等。但要是緩衝區中已經有了下一行的內容,這部分可能是我們想保留的。這個時候最好不要用sync()。可以考慮用ignore函式代替。

cin.ignore(numeric_limits::max(),'/n');//清除當前行

cin.ignore(numeric_limits::max()); 

//清除cin裡所有內容

不要被長長的名字嚇倒,numeric_limits::max()不過是climits標頭檔案定義的流使用的最大值,你也可以用乙個足夠大的整數代替它。

使用ignore顯然能比sync()更精確控制緩衝區。(1)

也可以參照這個鏈結看看用法:

第5章 002函式的作用域

有了函式之後,我們必須要面對乙個作用域的問題。比如 你現在訪問乙個變數,那麼 python 解析器是怎麼查詢到這個變數,並讀取到這個變數的值的呢?依靠的就是作用域規則!作用域 scope 作用域就是 python 程式的一塊文字區域,在這個區域內,可以直接訪問 directly accessible...

第 5 章 機器學習技術的應用 中

原文 全文目錄 特徵工程的重要性 需要同時掌握理論方法和業務邏輯才能提取有效的特徵 在特徵方面擁有最大的自主性和探索性 指徵能力,該特徵的大小變化對最終結果的大小變化會在什麼方向起到多大的作用 使用者id類特徵 id特徵,指為每個使用者分配乙個唯一id,將這組唯一id作為一組 one hot 特徵,...

第5章 在保護模式中呼叫C語言函式

步驟 1 設定ds es fs gs ss選擇符指向核心資料段 2 呼叫main函式 main.c檔案中的main函式由c語言編寫 setup.s源 如下所示 text global pm mode include kernel.inc code32 org 0 pm mode movl data ...