C++ 基本的輸入輸出

c++ 基本的輸入輸出

c++ 標(biāo)準(zhǔn)庫(kù)提供了一組豐富的輸入/輸出功能,我們將在后續(xù)的章節(jié)進(jìn)行介紹。本章將討論 c++ 編程中最基本和最常見(jiàn)的 i/o 操作。

c++ 的 i/o 發(fā)生在流中,流是字節(jié)序列。如果字節(jié)流是從設(shè)備(如鍵盤(pán)、磁盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)連接等)流向內(nèi)存,這叫做輸入操作。如果字節(jié)流是從內(nèi)存流向設(shè)備(如顯示屏、打印機(jī)、磁盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)連接等),這叫做輸出操作。

 

1. i/o 庫(kù)頭文件

下列的頭文件在 c++ 編程中很重要。

頭文件 函數(shù)和描述
該文件定義了 cin、cout、cerrclog 對(duì)象,分別對(duì)應(yīng)于標(biāo)準(zhǔn)輸入流、標(biāo)準(zhǔn)輸出流、非緩沖標(biāo)準(zhǔn)錯(cuò)誤流和緩沖標(biāo)準(zhǔn)錯(cuò)誤流。
該文件通過(guò)所謂的參數(shù)化的流操縱器(比如 setwsetprecision),來(lái)聲明對(duì)執(zhí)行標(biāo)準(zhǔn)化 i/o 有用的服務(wù)。
該文件為用戶(hù)控制的文件處理聲明服務(wù)。我們將在文件和流的相關(guān)章節(jié)討論它的細(xì)節(jié)。

 

2. 標(biāo)準(zhǔn)輸出流(cout)

預(yù)定義的對(duì)象 coutostream 類(lèi)的一個(gè)實(shí)例。cout 對(duì)象"連接"到標(biāo)準(zhǔn)輸出設(shè)備,通常是顯示屏。cout 是與流插入運(yùn)算符 << 結(jié)合使用的,如下所示:

#include  using namespace std;
 
int main( )
{
   char str[] = "hello c++";
   cout << "value of str is : " << str << endl; 
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

value of str is : hello c++

c++ 編譯器根據(jù)要輸出變量的數(shù)據(jù)類(lèi)型,選擇合適的流插入運(yùn)算符來(lái)顯示值。<< 運(yùn)算符被重載來(lái)輸出內(nèi)置類(lèi)型(整型、浮點(diǎn)型、double 型、字符串和指針)的數(shù)據(jù)項(xiàng)。

流插入運(yùn)算符 << 在一個(gè)語(yǔ)句中可以多次使用,如上面實(shí)例中所示,endl 用于在行末添加一個(gè)換行符。

 

3. 標(biāo)準(zhǔn)輸入流(cin)

預(yù)定義的對(duì)象 cinistream 類(lèi)的一個(gè)實(shí)例。cin 對(duì)象附屬到標(biāo)準(zhǔn)輸入設(shè)備,通常是鍵盤(pán)。cin 是與流提取運(yùn)算符 >> 結(jié)合使用的,如下所示:

#include  using namespace std;
 
int main( )
{
    char name[50];
    cout << "請(qǐng)輸入您的名稱(chēng): ";
    cin >> name;
    cout << "您的名稱(chēng)是: " << name << endl;   
} 

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)提示用戶(hù)輸入名稱(chēng)。當(dāng)用戶(hù)輸入一個(gè)值,并按回車(chē)鍵,就會(huì)看到下列結(jié)果:

請(qǐng)輸入您的名稱(chēng): cplusplus
您的名稱(chēng)是: cplusplus

c++ 編譯器根據(jù)要輸入值的數(shù)據(jù)類(lèi)型,選擇合適的流提取運(yùn)算符來(lái)提取值,并把它存儲(chǔ)在給定的變量中。

流提取運(yùn)算符 >> 在一個(gè)語(yǔ)句中可以多次使用,如果要求輸入多個(gè)數(shù)據(jù),可以使用如下語(yǔ)句:

cin >> name >> age;

這相當(dāng)于下面兩個(gè)語(yǔ)句:

cin >> name;
cin >> age;

 

4. 標(biāo)準(zhǔn)錯(cuò)誤流(cerr)

預(yù)定義的對(duì)象 cerrostream 類(lèi)的一個(gè)實(shí)例。cerr 對(duì)象附屬到標(biāo)準(zhǔn)錯(cuò)誤設(shè)備,通常也是顯示屏,但是 cerr 對(duì)象是非緩沖的,且每個(gè)流插入到 cerr 都會(huì)立即輸出。

cerr 也是與流插入運(yùn)算符 << 結(jié)合使用的,如下所示:

#include  using namespace std;
 
int main( )
{
   char str[] = "unable to read....";
   cerr << "error message : " << str << endl; 
} 

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

error message : unable to read....

 

5. 標(biāo)準(zhǔn)日志流(clog)

預(yù)定義的對(duì)象 clogostream 類(lèi)的一個(gè)實(shí)例。clog 對(duì)象附屬到標(biāo)準(zhǔn)錯(cuò)誤設(shè)備,通常也是顯示屏,但是 clog 對(duì)象是緩沖的。這意味著每個(gè)流插入到 clog 都會(huì)先存儲(chǔ)在緩沖區(qū)中,直到緩沖填滿(mǎn)或者緩沖區(qū)刷新時(shí)才會(huì)輸出。

clog 也是與流插入運(yùn)算符 << 結(jié)合使用的,如下所示:

#include  using namespace std;
 
int main( )
{
   char str[] = "unable to read....";
   clog << "error message : " << str << endl;
} 

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

error message : unable to read....

通過(guò)這些小實(shí)例,我們無(wú)法區(qū)分 cout、cerr 和 clog 的差異,但在編寫(xiě)和執(zhí)行大型程序時(shí),它們之間的差異就變得非常明顯。所以良好的編程實(shí)踐告訴我們,使用 cerr 流來(lái)顯示錯(cuò)誤消息,而其他的日志消息則使用 clog 流來(lái)輸出。

下一節(jié):c++ 結(jié)構(gòu) struct

c++ 簡(jiǎn)介

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频