流操縱運算元

2021-08-20 06:40:55 字數 2806 閱讀 7166

istream是用於輸入的流類,cin就是該類的物件。

ostream是用於輸出的流類,cout就是該類的物件。

ifstream是用於從檔案讀取資料的類。

ofstream是用於向檔案寫入資料的類。

iostream是既能用於輸入,又能用於輸出的類。

fstream 是既能從檔案讀取資料,又能向檔案寫入資料的類。

判斷輸入流結束

int x;

while(cin>>x)

return

0;

如果是從檔案輸入,比如前面有freopen(「some.txt」,」r」,stdin);

那麼,讀到檔案尾部,輸入流就算結束

如果從鍵盤輸入,則在單獨一行輸入ctrl+z代表輸入流結束

istream 類的成員函式

istream & getline(char * buf, int bufsize);

從輸入流中讀取bufsize-1個字元到緩衝區buf,或讀到碰到『\n』

為止(哪個先到算哪個)。

istream & getline(char * buf, int bufsize,char delim);

從輸入流中讀取bufsize-1個字元到緩衝區buf,或讀到碰到delim字

符為止(哪個先到算哪個)。

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

『\n』或

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

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

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

都會失敗了。

可以用 if(!cin.getline(…)) 判斷輸入是否結束

bool eof(); 判斷輸入流是否結束

int peek(); 返回下乙個字元,但不從流中去掉.

istream & putback(char c); 將字元ch放回輸入流

istream & ignore( int ncount = 1, int delim = eof );

從流中刪掉最多ncount個字元,遇到eof時結束。

• 整數流的基數:流操縱運算元dec(10進製),oct(8進製),hex(16進製制),setbase(設定任意進製)

• 浮點數的精度(precision,setprecision)

• 設定域寬(setw,width)

• 使用者自定義的流操縱運算元

使用流操縱運算元需要 #include

流操縱運算元

• 整數流的基數:流操縱運算元dec,oct,hex,setbase

int n = 10;

cout << n << endl; 結果:10

cout << hex

<< n << 「\n」 結果:a

<< dec << n << 「\n」 結果:10

<< oct

<< n << endl; 結果:12

控制浮點數精度的流操縱運算元

precision, setprecision

precision是成員函式,其呼叫方式為:

cout.precision(5);

setprecision 是流操作運算元,其呼叫方式為:

cout << setprecision(5); // 可以連續輸出,其後都保留5位有

效數字它們的功能相同。

指定輸出浮點數的有效位數(非定點方式輸出時)

指定輸出浮點數的小數點後的有效位數(定點方式輸出時)

定點方式:小數點必須出現在個位數後面

#include 

#include

int main()

輸出: 1.23457e+006 12.3457 1234567 12

cout << setiosflags(ios::fixed)

//定點輸出

<< setprecision(6)

<< x << endl

<< resetiosflags(ios::fixed)

//取消以小數點位置的方式輸出

<< x

設定域寬(setw,width)

int w = 4;   

char

string[10];

cin.width(5);

while(cin >> string)

寬度設定有效性是一次性的,在每次讀入和 輸出之前都要設定寬度。

樣例使用

#include 

#include

int main()

// 結果 5) ***+12.10000 6) 12.10000**** 7) ****12.10000 8) -***12.10000 9) 12.10000

格式

ostream &t(ostream &output)
因為 iostream 裡對 << 進行了過載(成員函式)

ostream & operator <<( ostream & ( * p ) ( ostream & ) ) ;

該函式內部會呼叫p所指向的函式,且以 *this 作為引數

hex 、dec 、oct 都是函式

流操縱運算元

注意 使用流操縱運算元需要 include 使用舉例 int main 輸出結果 10a 1012 1 setprecision流操縱運算元方式,呼叫方式 cout setprecision 5 可以連續輸出 2 precision呼叫cout的成員函式方式,呼叫方式 cout.precision ...

C 操縱運算元原理

c 流格式化有兩種方式 成員函式和操縱運算元,兩種等效。類似c的 printf。成員函式進行流格式化操作有些冗長乏味。操縱運算元又分有參和無參兩種。無參定義在 iostream 有參定義在中。istringstream is one 2.34 five string temp is setw 2 t...

Android上的事件流運算元據庫

最近在瀏覽某篇有關事件流的文章時,裡面提到了資料的流處理,興趣來了,就想看看能否在android端實現乙個。根據文章的介紹,將每次資料的變更事件,像是插入,刪除或者更新等,記為乙個不可變的事件,讓資料在事件中流淌,而不是對資料庫進行破壞性的寫入,也就是說,直接讀取資料的聚合結果就能獲取最好的效能。事...