W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
C++ 標準庫提供了一組豐富的輸入/輸出功能,我們將在后續(xù)的章節(jié)進行介紹。本章將討論 C++ 編程中最基本和最常見的 I/O 操作。
C++ 的 I/O 發(fā)生在流中,流是字節(jié)序列。如果字節(jié)流是從設(shè)備(如鍵盤、磁盤驅(qū)動器、網(wǎng)絡連接等)流向內(nèi)存,這叫做輸入操作。如果字節(jié)流是從內(nèi)存流向設(shè)備(如顯示屏、打印機、磁盤驅(qū)動器、網(wǎng)絡連接等),這叫做輸出操作。
下列的頭文件在 C++ 編程中很重要。
頭文件 | 函數(shù)和描述 |
---|---|
<iostream> | 該文件定義了 cin、cout、cerr 和 clog 對象,分別對應于標準輸入流、標準輸出流、非緩沖標準錯誤流和緩沖標準錯誤流。 |
<iomanip> | 該文件通過所謂的參數(shù)化的流操縱器(比如 setw 和 setprecision),來聲明對執(zhí)行標準化 I/O 有用的服務。 |
<fstream> | 該文件為用戶控制的文件處理聲明服務。我們將在文件和流的相關(guān)章節(jié)討論它的細節(jié)。 |
預定義的對象 cout 是 ostream 類的一個實例。cout 對象"連接"到標準輸出設(shè)備,通常是顯示屏。cout 是與流插入運算符 << 結(jié)合使用的,如下所示:
#include <iostream>
using namespace std;
int main( ){
char str[] = "Hello C++";
cout << "Value of str is : " << str << endl;
}
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Value of str is : Hello C++
C++ 編譯器根據(jù)要輸出變量的數(shù)據(jù)類型,選擇合適的流插入運算符來顯示值。<< 運算符被重載來輸出內(nèi)置類型(整型、浮點型、double 型、字符串和指針)的數(shù)據(jù)項。
流插入運算符 << 在一個語句中可以多次使用,如上面實例中所示,endl 用于在行末添加一個換行符。
預定義的對象 cin 是 istream 類的一個實例。cin 對象附屬到標準輸入設(shè)備,通常是鍵盤。cin 是與流提取運算符 >> 結(jié)合使用的,如下所示:
#include <iostream>
using namespace std;
int main(){
char name[50];
cout << "請輸入您的名稱: ";
cin >> name;
cout << "您的名稱是: " << name << endl;
}
當上面的代碼被編譯和執(zhí)行時,它會提示用戶輸入名稱。當用戶輸入一個值,并按回車鍵,就會看到下列結(jié)果:
請輸入您的名稱: cplusplus 您的名稱是: cplusplus
C++ 編譯器根據(jù)要輸入值的數(shù)據(jù)類型,選擇合適的流提取運算符來提取值,并把它存儲在給定的變量中。
流提取運算符 >> 在一個語句中可以多次使用,如果要求輸入多個數(shù)據(jù),可以使用如下語句:
cin >> name >> age;
這相當于下面兩個語句:
cin >> name;
cin >> age;
預定義的對象 cerr 是 ostream 類的一個實例。cerr 對象附屬到標準錯誤設(shè)備,通常也是顯示屏,但是 cerr 對象是非緩沖的,且每個流插入到 cerr 都會立即輸出。
cerr 也是與流插入運算符 << 結(jié)合使用的,如下所示:
#include <iostream>
using namespace std;
int main(){
char str[] = "Unable to read....";
cerr << "Error message : " << str << endl;
}
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Error message : Unable to read....
預定義的對象 clog 是 ostream 類的一個實例。clog 對象附屬到標準錯誤設(shè)備,通常也是顯示屏,但是 clog 對象是緩沖的。這意味著每個流插入到 clog 都會先存儲在緩沖區(qū)中,直到緩沖填滿或者緩沖區(qū)刷新時才會輸出。
clog 也是與流插入運算符 << 結(jié)合使用的,如下所示:
#include <iostream>
using namespace std;
int main(){
char str[] = "Unable to read....";
clog << "Error message : " << str << endl;
}
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Error message : Unable to read....
通過這些小實例,我們無法區(qū)分 cout、cerr 和 clog 的差異,但在編寫和執(zhí)行大型程序時,它們之間的差異就變得非常明顯。所以良好的編程實踐告訴我們,使用 cerr 流來顯示錯誤消息,而其他的日志消息則使用 clog 流來輸出。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: