C++輸入輸出(cin和cout)

在C語(yǔ)言中,我們通常會(huì)使用 scanf 和 printf 來(lái)對(duì)數(shù)據(jù)進(jìn)行輸入輸出操作。在C++語(yǔ)言中,C語(yǔ)言的這一套輸入輸出庫(kù)我們?nèi)匀荒苁褂?,但?C++ 又增加了一套新的、更容易使用的輸入輸出庫(kù)。
【例1】簡(jiǎn)單的輸入輸出代碼示例:
運(yùn)行結(jié)果如下(↙表示按下回車鍵):
Please input an int number:
8↙
The int number is x= 8
Please input a float number:
7.4↙
The float number is y= 7.4
C++ 中的輸入與輸出可以看做是一連串的數(shù)據(jù)流,輸入即可視為從文件或鍵盤中輸入程序中的一串?dāng)?shù)據(jù)流,而輸出則可以視為從程序中輸出一連串的數(shù)據(jù)流到顯示屏或文件中。
在編寫 C++ 程序時(shí),如果需要使用輸入輸出時(shí),則需要包含頭文件iostream
,它包含了用于輸入輸出的對(duì)象,例如常見(jiàn)的cin
表示標(biāo)準(zhǔn)輸入、cout
表示標(biāo)準(zhǔn)輸出、cerr
表示標(biāo)準(zhǔn)錯(cuò)誤。
iostream 是 Input Output Stream 的縮寫,意思是“輸入輸出流”。
cout 和 cin 都是 C++ 的內(nèi)置對(duì)象,而不是關(guān)鍵字。C++ 庫(kù)定義了大量的類(Class),程序員可以使用它們來(lái)創(chuàng)建對(duì)象,cout 和 cin 就分別是 ostream 和 istream 類的對(duì)象,只不過(guò)它們是由標(biāo)準(zhǔn)庫(kù)的開發(fā)者提前創(chuàng)建好的,可以直接拿來(lái)使用。這種在 C++ 中提前創(chuàng)建好的對(duì)象稱為內(nèi)置對(duì)象。
使用 cout 進(jìn)行輸出時(shí)需要緊跟<<
運(yùn)算符,使用 cin 進(jìn)行輸入時(shí)需要緊跟>>
運(yùn)算符,這兩個(gè)運(yùn)算符可以自行分析所處理的數(shù)據(jù)類型,因此無(wú)需像使用 scanf 和 printf 那樣給出格式控制字符串。
第 6 行代碼表示輸出"Please input a int number:"
這樣的一個(gè)字符串,以提示用戶輸入整數(shù),其中endl
表示換行,與C語(yǔ)言里的\n
作用相同。當(dāng)然這段代碼中也可以用\n
來(lái)替代endl
,這樣就得寫作:
cout<<"Please input an int number:\n";
endl 最后一個(gè)字符是字母“l(fā)”,而非阿拉伯?dāng)?shù)字“1”,它是“end of line”的縮寫。
第 7 行代碼表示從標(biāo)準(zhǔn)輸入(鍵盤)中讀入一個(gè) int 型的數(shù)據(jù)并存入到變量 x 中。如果此時(shí)用戶輸入的不是 int 型數(shù)據(jù),則會(huì)被強(qiáng)制轉(zhuǎn)化為 int 型數(shù)據(jù)。
第 8 行代碼將輸入的整型數(shù)據(jù)輸出。從該語(yǔ)句中我們可以看出 cout 能夠連續(xù)地輸出。同樣 cin 也是支持對(duì)多個(gè)變量連續(xù)輸入的,如下所示。
【例2】cin 連續(xù)輸入示例:
運(yùn)行結(jié)果:
Please input an int number and a float number:
8 7.4↙
The int number is x= 8
The float number is y= 7.4???
第 7 行代碼連續(xù)從標(biāo)準(zhǔn)輸入中讀取一個(gè)整型和一個(gè)浮點(diǎn)型數(shù)字(默認(rèn)以空格分隔),分別存入到 x 和 y 中。
輸入運(yùn)算符>>
在讀入下一個(gè)輸入項(xiàng)前會(huì)忽略前一項(xiàng)后面的空格,所以數(shù)字 8 和 7.4 之間要有一個(gè)空格,當(dāng) cin 讀入 8 后忽略空格,接著讀取 7.4。
初學(xué)者可能會(huì)覺(jué)得 cout、cin 的用法非常奇怪,它們既不是類似 printf()、scanf() 的函數(shù)調(diào)用,也不是關(guān)鍵字,請(qǐng)大家先保留這個(gè)疑問(wèn),我們會(huì)在《C++運(yùn)算符重載》一章中為你揭開謎底。
cout、cin 的用法非常強(qiáng)大靈活,本節(jié)所展示的只是最基本的功能,更多高級(jí)技巧將在后續(xù)章節(jié)中介紹。在以后的 C++ 編程中,我也推薦大家使用 cin、cout,它們比C語(yǔ)言中的 scanf、printf 更加靈活易用。