鍍金池/ 教程/ C/ 基本輸入輸出
動態(tài)內(nèi)存
類和對象
接口 (抽象類)
結(jié)構(gòu)體
循環(huán)的類型
函數(shù)
數(shù)字
日期和時間
基本語法
多態(tài)
數(shù)據(jù)抽象
注釋
命名空間
字符串
預(yù)處理器
決策語句
修飾符的類型
鍙橀噺綾誨瀷
基本輸入輸出
操作符
數(shù)組
模板
多線程
繼承
Web 編程
信號處理
指針
存儲類型
概述
引用
常量
異常處理
開發(fā)環(huán)境
重載
變量作用域
數(shù)據(jù)類型
數(shù)據(jù)封裝
文件和流

基本輸入輸出

C++ 標準庫提供了一組廣泛的的輸入/輸出功能,我們將在隨后的章節(jié)中展開。本章將討論 C++ 編程所需的最基本和最常見的 I/O 操作。

C++ I/O發(fā)生在流中,流是一種字節(jié)序列。如果字節(jié)流從一個設(shè)備(如鍵盤、磁盤驅(qū)動器,或網(wǎng)絡(luò)連接等)到主內(nèi)存,這稱為輸入操作(input operation)。如果字節(jié)從主內(nèi)存流向一個設(shè)備(如顯示屏,打印機,磁盤驅(qū)動器,或網(wǎng)絡(luò)連接等),這就是所謂的輸出操作(output operation)。

I/O 庫頭文件

下邊列出對于 C++ 程序重要的頭文件:

頭文件 功能和描述
<iostream> 這個頭文件定義了 cin、cout、cerrclog 對象,它們分別對應(yīng)于標準輸入流,標準輸出流,無緩沖標準錯誤流和有緩沖標準錯誤流。
<iomanip> 這個頭文件聲明了用于執(zhí)行格式化 I/O 操作的一系列服務(wù),即所謂的參數(shù)化流操作,如 setwsetprecision。
<fstream> 這個頭文件聲明了基于用戶控制的文件處理服務(wù)。我們將在文件和流相關(guān)的章節(jié)更詳細討論關(guān)于它的內(nèi)容。

標準輸出流

預(yù)定義的對象 coutostream 類的一個實例。cout 對象通常連接到標準輸出設(shè)備,一般是顯示屏。cout 和流插入運算符聯(lián)合使用,流插入運算符寫為 <<,即兩個表示小于的符號,如以下示例所示。

    #include <iostream>

    using namespace std;

    int main( )
    {
       char str[] = "Hello C++";

       cout << "Value of str is : " << str << endl;
    }

編譯和執(zhí)行上面的代碼,運行結(jié)果如下:

    Value of str is : Hello C++

C++ 編譯器也決定了輸出的變量數(shù)據(jù)類型并選擇適當?shù)牧鞑迦脒\算符來顯示值。<< 操作符重載了多種輸出數(shù)據(jù)項(包括各種內(nèi)置類型:整數(shù)、浮點數(shù)、雙精度浮點數(shù)、字符串和指針類型的值)。

插入運算符<<在一個語句中可能不止一次被使用,如上所示,endl 寫在結(jié)束的時候用于添加一個新行。

標準輸入流

預(yù)定義對象 cinistream 類的一個實例。cin 對象通常用于標準輸入設(shè)備,一般是鍵盤。cin 和流提取運算符聯(lián)合使用,流提取符號寫為>>即兩個表示大于的符號,如以下示例所示。

    #include <iostream>

    using namespace std;

    int main( )
    {
       char name[50];

       cout << "Please enter your name: ";
       cin >> name;
       cout << "Your name is: " << name << endl;

    }

編譯和執(zhí)行上面的代碼,它會提示輸入一個名稱。輸入一個值,然后回車,運行結(jié)果如下:

    Please enter your name: cplusplus
    Your name is: cplusplus

C++ 編譯器也決定輸入值的數(shù)據(jù)類型和選擇適當?shù)牧魈崛∵\算符提取值并將其存儲在給定的變量。

流提取操作符>>可以在一個聲明中不止一次使用。請求多個數(shù)據(jù)時,可采用以下書寫形式:

    cin >> name >> age;

上述表達式等價于下面兩個聲明語句:

    cin >> name;
    cin >> age;

標準錯誤流

預(yù)定義對象 cerrostream 類的一個實例。cerr 對象通常附加到標準錯誤設(shè)備,這一般也是一個顯示屏,但對象 cerr 是無緩存的,每當有流插入到 cerr 會導(dǎo)致其輸出立即出現(xiàn)。

cerr 也與流插入操作符一起使用,如以下示例所示。

    #include <iostream>

    using namespace std;

    int main( )
    {
       char str[] = "Unable to read....";

       cerr << "Error message : " << str << endl;
    }

編譯和執(zhí)行上面的代碼,運行結(jié)果如下:

    Error message : Unable to read....

標準日志流

預(yù)定義對象 clogostream 類的一個實例。clog 對象通常附加到標準錯誤設(shè)備,這一般也是一個顯示屏,但對象 clog 是有緩沖的。這意味著每個插入的 clog 會暫存在緩沖區(qū)中,直到緩沖區(qū)滿或者緩沖區(qū)刷新才會產(chǎn)生一次輸出。

clog 也與流插入操作符一起使用,如以下示例所示。

    #include <iostream>

    using namespace std;

    int main( )
    {
       char str[] = "Unable to read....";

       clog << "Error message : " << str << endl;
    }

編譯和執(zhí)行上面的代碼,運行結(jié)果如下:

    Error message : Unable to read....

在這些小例子中,你可能無法看出 cout,cerr,clog 的區(qū)別,但在編寫、執(zhí)行大項目時,差異就變得顯而易見了。所以這是很好的應(yīng)用實踐:使用 cerr 流顯示錯誤消息,而使用 clog 顯示其他日志信息。

上一篇:函數(shù)下一篇:操作符