标準I/O對象:cin,cout,cerr,clog
cout流對象
cont是console output的縮寫,意為在控制台(終端顯示器)的輸出。強調幾點。
1) cout不是C++預定義的關鍵字,它是ostream流類的對象,在iostream中定義。 顧名思義,流是流動的資料,cout流是流向顯示器的資料。cout流中的資料是用流插入運算符“<<”順序加入的。如果有
cout<<"I "<<"study C++ "<<"very hard. << “wang bao ming ";
按順序将字元串"I ", "study C++ ", "very hard."插人到cout流中,cout就将它們送到顯示器,在顯示器上輸出字元串"I study C++ very hard."。cout流是容納資料的載體,它并不是一個運算符。人們關心的是cout流中的内容,也就是向顯示器輸出什麼。
2)用“ccmt<<”輸出基本類型的資料時,可以不必考慮資料是什麼類型,系統會判斷資料的類型,并根據其類型選擇調用與之比對的運算符重 載函數。這個過程都是自動的,使用者不必幹預。如果在C語言中用prinf函數輸出不同類型的資料,必須分别指定相應的輸出格式符,十分麻煩,而且容易出 錯。C++的I/O機制對使用者來說,顯然是友善而安全的。
3) cout流在記憶體中對應開辟了一個緩沖區,用來存放流中的資料,當向cout流插 人一個endl時,不論緩沖區是否已滿,都立即輸出流中所有資料,然後插入一個換行符, 并重新整理流(清空緩沖區)。注意如果插人一個換行符”\n“(如cout<<a<<"\n"),則隻輸出和換行,而不重新整理cout 流(但并不是所有編譯系統都展現出這一差別)。
4) 在iostream中隻對"<<"和">>"運算符用于标準類型資料的輸入輸出進行了重載,但未對使用者聲明的類型資料的輸入輸出 進行重載。如果使用者聲明了新的類型,并希望用"<<"和">>"運算符對其進行輸入輸出,按照重運算符重載來做。
cerr流對象
cerr流對象是标準錯誤流,cerr流已被指定為與顯示器關聯。cerr的 作用是向标準錯誤裝置(standard error device)輸出有關出錯資訊。cerr與标準輸出流cout的作用和用法差不多。但有一點不同:cout流通常是傳送到顯示器輸出,但也可以被重定向 輸出到磁盤檔案,而cerr流中的資訊隻能在顯示器輸出。當調試程式時,往往不希望程式運作時的出錯資訊被送到其他檔案,而要求在顯示器上及時輸出,這時 應該用cerr。cerr流中的資訊是使用者根據需要指定的。
clog流對象
clog流對象也是标準錯誤流,它是console log的縮寫。它的作用和cerr相同,都是在終端顯示器上顯示出錯資訊。差別:cerr是不經過緩沖區,直接向顯示器上輸出有關資訊,而clog中的資訊存放在緩沖區中,緩沖區滿後或遇endl時向顯示器輸出。
緩沖區的概念:
