C++基本輸入/輸出
C++標準庫提供一套廣泛的輸入/輸出功能,我們將在後麵的章節中看到的。本章將討論所需的C++編程非常基本的,最常見的I/O操作。
C++ 的I/O發生在流,這是字節序列。如果字節從設備流向如鍵盤,磁盤驅動器,或網絡連接等,以主存儲器,這就是所謂的輸入操作,如果字節從主存儲器流到設備等的顯示屏幕,打印機,磁盤驅動器或網絡連接等等,這就是所謂的輸出操作。
I/O庫頭文件:
在C++程序中有以下很重要的頭文件:
頭文件 | 函數和描述 |
---|---|
<iostream> | 此文件定義cin, cout, cerr 和 clog 對象,分彆對應於標準輸入流,標準輸出流中,無緩衝標準錯誤流和緩衝標準錯誤流 |
<iomanip> | 該文件聲明服務,所謂的參數化流操縱,如setw和setprecision進行格式化I/O |
<fstream> | 該文件聲明服務用戶控製文件處理。我們將詳細的文件一下討論和Stream相關章節 |
標準輸出流 (cout):
預定義的對象cout是ostream的類的實例。該cout對象被說成是“連接到”標準輸出設備,這通常是在顯示屏幕上。 cout用於在結合流插入操作符,它被寫成<< ,如下例少於2標誌。
#include <iostream> using namespace std; int main( ) { char str[] = "Hello C++"; cout << "Value of str is : " << str << endl; }
讓我們編譯和運行上麵的程序,這將產生以下結果:
Value of str is : Hello C++
C++編譯器也確定變量的數據類型將被輸出,並選擇適當的流插入操作者顯示該值。 <<運算符重載,以輸出數據項內置類型整數,浮點數,雙精度型,字符串和指針值。
插入運算符<<可以使用一次以上在單個語句中所示的上方,endl用來添加新的行,寫在當行的末尾。
標準輸入流 (cin):
預定義對象cin 是istream類的一個實例。cin對象被認為是連接到標準輸入設備,這通常是鍵盤。cin用於與流提取運算符,它被寫成>>所示在下麵的例子是比標誌大2。
#include <iostream> using namespace std; int main( ) { char name[50]; cout << "Please enter your name: "; cin >> name; cout << "Your name is: " << name << endl; }
當上麵的代碼被編譯和執行,它會提示輸入一個名稱。然後輸入一個值,按下回車鍵來查看結果的東西如下:
Please enter your name: cplusplus Your name is: cplusplus
C++編譯器也確定了輸入值的數據類型,並選擇適當的流提取算子來提取值,並將其存儲在給定的變量。
流提取運算符>>在一條語句中,可以多次使用。要求一個以上的數據,可以使用以下命令:
cin >> name >> age;
這將等同於以下兩個語句:
cin >> name; cin >> age;
標準錯誤流(cerr):
預定義的對象cerr是ostream類的一個實例。cerr對象被認為是附著到標準錯誤設備,這也是一個顯示屏幕,但是在對象cerr是無緩衝和每個流插入到cerr導致其輸出立即顯示。
cerr 也用於與該流的插入操作者一起作為顯示在下麵的例子。
#include <iostream> using namespace std; int main( ) { char str[] = "Unable to read...."; cerr << "Error message : " << str << endl; }
讓我們編譯和運行上麵的程序,這將產生以下結果:
Error message : Unable to read....
標準的日誌流(clog):
預定義的對象clog是ostream 類的一個實例。clog對象被連接到標準錯誤設備,這也是一個顯示屏幕,但是在對象clog被緩衝。這意味著,每個插入堵塞會導致其輸出到在緩衝器被保持到緩衝區填滿或直到緩衝器被刷新。
clog也被用於與此流的插入操作者一起作為顯示在下麵的例子。
#include <iostream> using namespace std; int main( ) { char str[] = "Unable to read...."; clog << "Error message : " << str << endl; }
讓我們編譯和運行上麵的程序,這將產生以下結果:
Error message : Unable to read....
這裡將無法看到cout,cerr 的區彆,在clog的這些小例子,編寫和執行大程序差彆明顯。所以這是很好的做法,以顯示使用cerr流的錯誤信息並顯示其他日誌消息應該使用clog。