輸入輸出相關的類

2022-01-24 03:06:41 字數 3114 閱讀 9446

(1)標準輸入流物件

能向記憶體緩衝區輸入資料的裝置稱為輸入流。比如:鍵盤、檔案。

(2)標準輸出流物件

能將記憶體緩衝區的資料儲存起來,或者顯示(總之是從記憶體緩衝區讀取資料)的裝置稱為輸出流。比如:鍵盤、檔案。

(3)三個標準輸出流之間的關係

引數預設情況下,cerrclogcout作用一樣。cerrclog的區別在於cerr不使用緩衝區,直接向顯示器輸出資訊;而輸出到clog中的資訊先會被存放在緩衝區,緩衝區滿或者重新整理時才輸出到螢幕。

(1)輸出重定向

#include

using

namespace std;

intmain()

/*t.txt:

3.14 123

輸出:3.14,123

*/

cerr和clog的作用:我們不希望將錯誤資訊或者日誌資訊輸出到輸出檔案上,而此時cout又關聯著輸出檔案。此時就可以使用cerr或者clog,進行輸出。

(2)輸入重定向

#include

using

namespace std;

intmain()

(1)判斷流結束的常用**:
int x;

while

(cin>>x)

return

0;

(2)怎樣才叫檔案結束?

(3)為什麼cin>>x的返回值可以用來作為判斷是否結束的邏輯表示式的條件語句?

因為cin所屬類內部對於強制型別轉換運算子進行了過載,並將cin型別的值 強轉為布林型別,使其返回布林型別。

istream &

operator

>>

(int

& a)

(1)函式1
istream &

getline

(char

* buf,

int bufsize)

;

函式功能:從輸入流中讀取bufsize-1個字元到緩衝區buf,或讀到碰到\n為止(哪個先到算哪個)。

(2)函式2

istream &

getline

(char

* buf,

int bufsize,

char delim)

;

函式功能:從輸入流中讀取bufsize-1個字元到緩衝區buf,或讀到碰到delim字元為止(哪個先到算哪個)。引數delim就是分隔符。

(3)函式3

bool

eof(

);

函式功能:判斷輸入流是否結束。

(4)函式4

int

peek

()

函式功能:返回下乙個字元,但不從流中去掉。

應用:有時我們需要知道下次讀取的資料是什麼型別的,以做不同的應對(用string變數存、int變數存等)。這時就可以利用peek函式。

(5)函式5

istream &

putback

(char c)

;

函式功能:將字元ch放回輸入流。

(6)函式6

istream &

ignore

(int ncount =1,

int delim =

eof)

;

函式功能:從流中刪掉最多ncount個字元,遇到eof時結束。eof一般值為-1

(7)過載的函式1和函式2的區別與聯絡

兩個函式都會自動在buf中讀入資料的結尾新增\0\n

delim都不會被讀入buf,但會被從輸入流中取走。如果輸入流中

\ndelim之前的字元個數達到或超過了bufsize個,就導致讀

入出錯,其結果就是:雖然本次讀入已經完成,但是之後的讀入就

都會失敗了

注意:可以用if(!cin.getline(...))判斷輸入是否結束。

getline函式應用非常廣泛,其中有一些細節需要注意一下。

#include

using

namespace std;

intmain()

/*輸入:

12 abcd↙

輸出:abcd (空格+abcd)

輸入12↙

程式立即結束,無輸出。

*/

12被存入x中。而後面的90個字元,或者遇到(\n)結束 作為存入buf中。getline函式能夠讀取空格。 因此輸出空格加abcd

因為getline讀到留在流中的\n就會返回。

輸入輸出相關的類

1 標準輸入流物件 能向記憶體緩衝區輸入資料的裝置稱為輸入流。比如 鍵盤 檔案。2 標準輸出流物件 能將記憶體緩衝區的資料儲存起來,或者顯示 總之是從記憶體緩衝區讀取資料 的裝置稱為輸出流。比如 鍵盤 檔案。3 三個標準輸出流之間的關係 引數預設情況下,cerr clog和cout作用一樣。cerr...

輸入輸出類的區別

如果你是讀取文字類資料,建議採用reader類,如inputstreamreader或bufferedreader之類的,可以省去這個疑慮。如果非要用stream流,讀取byte陣列,建議將資料全部讀上來再轉換為string,不然你必須要知道該檔案的編碼格式。fileinputstream 適用於位...

快速輸入輸出類(C )

我們知道,cin cout是很慢的,所以我們經常scanf printf。但是如果要求更嚴格一些,速度要更快,該怎麼辦呢?有一種解決辦法,那就是 快速輸入輸出。快速輸入輸出採用getchar 和putchar 函式,用了數字累加的方法輸入 輸出數。我們也可以把快速輸入輸出定義成類,就像cin cou...