官术网_书友最值得收藏!

1.3 玩轉輸入輸出

標準輸入輸出流的對象和操作方法都是由istream和ostream兩個類提供的,這兩個類繼承自ios基類,它們預定義了標準輸入輸出流對象,并且提供了多種形式的輸入輸出功能。C++在進行輸入時需要從流中提取數(shù)據(jù),在輸出時需要向流中插入數(shù)據(jù),提取和插入是通過在流類庫中重載“>>”和“<<”運算符實現(xiàn)的。

1. cin

cin是istream類的對象,用于處理標準輸入(即鍵盤輸入);cout是ostream類的對象,用于處理標準輸出(即屏幕輸出)。cin與提取運算符“>>”結合使用,cout與插入運算符“<<”結合使用,完成了C++中的輸入輸出操作。

cin從標準輸入設備(鍵盤)中獲取數(shù)據(jù),通過提取運算符“>>”從流中提取數(shù)據(jù),然后發(fā)送給cin對象,由cin對象將數(shù)據(jù)發(fā)送到指定的地方。cin是帶緩沖區(qū)的輸入流對象,只有在輸入完數(shù)據(jù)并按下回車鍵后,該行數(shù)據(jù)才被送入鍵盤緩沖區(qū),形成輸入流,提取運算符“>>”才能從中提取數(shù)據(jù)。例如:

此時若從鍵盤上輸入10,則10只是被存入緩沖區(qū),并不能被“>>”運算符提取,按下回車鍵后,緩沖區(qū)中的內容才被刷新成輸入流,被“>>”運算符提取后傳遞給cin對象,由cin對象發(fā)送到變量a中存儲。

從流中讀取數(shù)據(jù)要保證能正常進行。例如,如果針對以上代碼,從鍵盤上輸入字符串“abc”,則進行提取操作會失敗,此時cin流被置為出錯狀態(tài),因為變量a是int類型。只有在正常狀態(tài)時才能從輸入流中提取數(shù)據(jù),這也是C++ I/O的安全性體現(xiàn)。

除了單個變量讀取,cin對象也可以一次性讀入多個變量的值,因為“>>”運算符返回的是istream的引用,所以可連續(xù)提取數(shù)據(jù)。例如:

若從鍵盤輸入1 2,上面的cin語句就會把輸入的1發(fā)送給變量a,把輸入的2發(fā)送給變量b。當輸入多個數(shù)值時,要在數(shù)值之間加空格以示區(qū)分,cin讀到空格時,就能夠區(qū)分輸入的各個數(shù)值。除了在輸入的數(shù)據(jù)之間加空格,也可以在每輸入一個數(shù)據(jù)后都按回車鍵或Tab鍵,這樣就可以正確地讀入數(shù)據(jù)了。

也可以采用cin對象一次性讀入多個不同類型的變量值。例如:

當從鍵盤正確輸入字符串和float類型的值時,cin會將它們分別存儲到對應變量中。

讀入字符串后,也可以采用字符數(shù)組存儲字符串。例如:

如果用一個字符數(shù)組存儲字符串,則要確保輸入的字符串不超出字符數(shù)組的大小,否則會發(fā)生溢出,破壞內存中的其他數(shù)據(jù)。

2. cout

cout是ostream類的對象,對應的標準設備為屏幕,叫作標準輸出對象或屏幕輸出對象,但也可被重定向輸出到磁盤文件。用戶可以通過cout對象調用ostream類的插入運算符和成員函數(shù)來輸出信息。

(1)利用cout對象可以直接輸出常量值。在輸出常量值時,直接將要輸出的內容放在“<<”運算符后面即可。例如:

(2)利用cout對象輸出變量的值。在用cout輸出變量值時,不必設置以什么格式輸出,“<<”運算符會根據(jù)變量的數(shù)據(jù)類型自動調用相匹配的重載函數(shù)來正確輸出,這比C語言中的printf()函數(shù)的用法更簡便。例如:

(3)利用cout對象輸出指針、引用類型的數(shù)據(jù)。當輸出數(shù)據(jù)為指針或引用類型時,與printf()函數(shù)的用法一致,不帶“*”符號輸出的是指針的值,即變量的地址;帶“*”符號輸出的是指針指向的變量的值。它比printf()函數(shù)簡便之處在于不必設置數(shù)據(jù)的輸出格式。例如:

(4)cout對象可以連續(xù)輸出數(shù)據(jù)。例如:

訓練1-1:輸入圓的半徑r,輸出其周長和面積。

3. 浮點數(shù)精度、域寬、填充

對于浮點數(shù),可以設置精度,控制輸出的位數(shù);也可以設置域寬,控制輸出占多少位;還可以用字符填充,如下表所示。進行這些操作時需要引入頭文件#include <iomanip>。

訓練1-2:將2.0開平方后設置不同的精度和寬度輸出。

4. 輸出格式

在輸出時,可以控制輸出的進制和換行,如下表所示。

在輸出時,還可以控制左右對齊、科學記數(shù)法等,如下表所示。

5. 常用的運算符

常用的運算符及其作用如下表所示。

(1)常用的算術運算符及其運算、范例、結果如下表所示。

訓練1-3:輸入一個三位數(shù),輸出其個位、十位、百位上的數(shù)字。

(2)常用的賦值運算符及其運算、范例、結果如下表所示。

(3)常用的關系運算符及其運算、范例、結果如下表所示。關系運算符用于對兩個數(shù)值或變量進行比較,其結果是一個邏輯值(“真”或“假”)。

(4)常用的邏輯運算符及其運算、范例、結果如下表所示。邏輯運算符用于判斷數(shù)據(jù)的真假,其結果為“真”或“假”。

注意:千萬不要將“==”運算符寫成賦值運算符“=”。例如,不能將if(a==b)寫成if(a=b),雖然系統(tǒng)不會有錯誤提示,卻存在邏輯錯誤。

優(yōu)先級如下:

? “&&”優(yōu)先級高于“||”;

? “&&”“||”優(yōu)先級低于關系運算;

? “!”優(yōu)先級高于所有關系運算和算術運算。

訓練1-4:輸入3個整數(shù),分別輸出其增加1、擴大10倍、縮小10倍的結果。

主站蜘蛛池模板: 美姑县| 湘潭市| 朔州市| 黄冈市| 台东县| 贵溪市| 普格县| 台山市| 香格里拉县| 库车县| 云林县| 北川| 同心县| 长阳| 台湾省| 罗源县| 定安县| 定安县| 巴南区| 玉溪市| 连江县| 军事| 阿拉善左旗| 金坛市| 长岭县| 朝阳市| 元氏县| 紫金县| 安图县| 美姑县| 湖州市| 冕宁县| 镇坪县| 沙田区| 酉阳| 黄大仙区| 蛟河市| 台安县| 高台县| 石阡县| 南通市|