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端實現乙個。根據文章的介紹,將每次資料的變更事件,像是插入,刪除或者更新等,記為乙個不可變的事件,讓資料在事件中流淌,而不是對資料庫進行破壞性的寫入,也就是說,直接讀取資料的聚合結果就能獲取最好的效能。事...