istream(輸入流)型別,提供輸入操作;
ostream(輸出流)型別,提供輸出操作;
cin:乙個istream物件,從標準輸入讀取資料;
cout:乙個ostream物件,從標準輸出讀取資料;
cerr:乙個ostream物件,通常用於輸出程式錯誤訊息,寫入到標準錯誤;
「>>」:運算子,用來從乙個istream物件讀取資料;
「<<」:運算子,用來從乙個ostream物件讀取資料;
getline函式,從乙個給定的istream物件中讀取一行資料,存入乙個給定的string物件中。
ofstream out1, out2;
out1 = out2; //錯誤:不能對流物件賦值
ofstream print(ofstream);//錯誤:不能初始化ofstream引數
out2 = print(out2); //錯誤:不能拷貝流物件
由於不能拷貝 io物件,因此我們也不能將形參或返回型別設定為流型別,進行io操作的函式通常以 引用方式傳遞和返回流,讀寫乙個io物件會改變其狀態,因此傳遞和返回的引用不能是const的。
io庫條件狀態
strm:iostate:strm是一種io型別;
strm:badbit:用來指出流已崩潰;
strm:failbit:用來指出io操作失敗;
strm:eofbit:用來指出檔案已結束;
strm:goodbit:用來指出流未處於錯誤狀態;
s.eof():若流s的eofbit置位,則返回true;
s.fail():若流的failbit或badbit置位,則返回true;
s.bad():若流的badbit置位,則返回true;
s.good():若s處於有效狀態,則返回true;
s.clear():將流s中所有的條件狀態狀態位復位,將流的狀態設定為有效,返回void;
s.clear(flags):根據給定的flags標誌位,將流s中對應條件狀態位復位。
s.setstate(flags):根據給定的flags標誌位,將流s中對應條件狀態位置位。
s.rdstate():返回流s的當前條件狀態。
cout
<< "hi"
<< endl; //輸出hi和乙個換行,然後重新整理緩衝區
cout
<< "hi"
<< flush; //輸出hi,然後重新整理緩衝區,不附加任何額外的字元
cout
<< "hi"
<< ends; //輸出hi和乙個空字元,然後重新整理緩衝區
警告:如果程式崩潰,輸出緩衝區不會被重新整理這點在根據日誌檢視bug時深有體會,有時程式崩潰了,但是它所輸出的資料可能停留在輸出緩衝區中等待列印。
回顧c 基礎(2)
我們知道在c 中,記憶體有五個區 堆區,棧區,自由儲存區,全域性 靜態儲存區和常量儲存區。棧區 就是通常由編譯器在需要的時候進行分配,在不需要的時候自動清除的區域,比如區域性變數,函式引數。堆區 就是那些由new出來的分配的記憶體塊,它們的釋放編譯器不用管,是由我們的應用程式去控制,一般乙個new就...
c語言基礎回顧 2
注意 字元型和整數型關係非常密切,可把字元型看做一種特殊的整型 二 常量和變數 整型常量 1.八進位制整常數八進位制整常數必須以0開頭,即以0作為八進位制數的字首。數碼取值為0 7。八進位制數通常是無符號數。2 十六進製制整常數的字首為0x或0x。其數碼取值為0 9,a f或a f。3 十進位制整常...
基礎回顧 2
string 字串常量 stringbuffer 字串變數 執行緒安全 stringbuilder 字串變數 非執行緒安全 string 型別和 stringbuffer 型別的主要效能區別其實在於 string 是不可變的物件,因此在每次對 string 型別進行改變的時候其實都等同於生成了乙個新...