輸入和輸出並不是c++語言中的正式組成成分。c和c++本身都沒有為輸入和輸出提供專門的語句結構。輸入輸出不是由c++本身定義的,而是在編譯系統提供的i/o庫中定義的。
c++的輸出和輸入是用「流」(stream)的方式實現的。圖3.2和圖3.3表示c++通過流進行輸入輸出的過程。
有關流物件cin、cout和流運算子的定義等資訊是存放在c++的輸入輸出流庫中的,因此如果在程式中使用cin、cout和流運算子,就必須使用預處理命令把頭檔案stream包含到本檔案中:
#include
儘管cin和cout不是c++本身提供的語句,但是在不致混淆的情況下,為了敘述方便,常常把由cin和流提取運算子「>>」實現輸入的語句稱為輸入語句或cin語句,把由cout和流插入運算子「<<」實現輸出的語句稱為輸出語句或cout語句。根據c++的語法,凡是能實現某種操作而且最後以分號結束的都是語句。
輸入流與輸出流的基本操作
cout語句的一般格式為:
cout《表示式1《表示式2<<……《表示式n;
cin語句的一般格式為:
cin>>變數1>>變數2>>……>>變數n;
在定義流物件時,系統會在記憶體中開闢一段緩衝區,用來暫存輸入輸出流的資料。在執行cout語句時,先把插入的資料順序存放在輸出緩衝區中,直到輸出緩衝區滿或遇到cout語句中的endl(或'\n',ends,flush)為止,此時將緩衝區中已有的資料一起輸出,並清空緩衝區。輸出流中的資料在系統預設的裝置(一般為顯示器)輸出。
乙個cout語句可以分寫成若干行。如
cout<<"this is a ****** c++ program."<>a>>b>>c>>d;
可以寫成
cin>>a //注意行末尾無分號
>>b //這樣寫可能看起來清晰些
>>c
>>d;
也可以寫成
cin>>a;
cin>>b;
cin>>c;
cin>>d;
以上3種情況均可以從鍵盤輸入:
1 2 3 4 ↙
也可以分多行輸入資料:
1↙2 3↙
4↙
在用cin輸入時,系統也會根據變數的型別從輸入流中提取相應長度的位元組。如有
char c1, c2;
int a;
float b;
cin>>c1>>c2>>a>>b;
如果輸入
1234 56.78↙
注意: 34後面應該有空格以便和56.78分隔開。也可以按下面格式輸入:
1 2 34 56.78↙ (在1和2之間有空格)
不能用cin語句把空格字元和回車換行符作為字元輸入給字元變數,它們將被跳過。如果想將空格字元或回車換行符(或任何其他鍵盤上的字元)輸入給字元變數,可以使用getchar函式。
在組織輸入流資料時,要仔細分析cin語句中變數的型別,按照相應的格式輸入,否則容易出錯。
在輸入流與輸出流中使用控制符
上面介紹的是使用cout和cin時的預設格式。但有時人們在輸入輸出時有一些特殊的要求,如在輸出實數時規定字段寬度,只保留兩位小數,資料向左或向右對齊等。c++提供了在輸入輸出流中使用的控制符(有的書中稱為操縱符),見表3.1。
表 3.1 輸入輸出流的控制符
[list]
[*]控制符 作 用
[*]dec 設定數值的基數為10
[*]hex 設定數值的基數為16
[*]oct 設定數值的基數為8
[*]setfill(c) 設定填充字元c,c可以是字元常量或字元變數
[*]setprecision(n) 設定浮點數的精度為n位。在以一般十進位制小數形式輸出時,n代表有效數字。在以fixed(固定小數字數)形式和 scientific(指數)形式輸出時,n為小數字
[*]數
[*]setw(n) 設定字段寬度為n位
[*]setiosflags( ios::fixed) 設定浮點數以固定的小數字數顯示
[*]setiosftags( ios::scientific) 設定浮點數以科學記數法(即指數形式)顯示
[*]setiosflags( ios::left) 輸出資料左對齊
[*]setiosflags( ios::right) 輸出資料右對齊
[*]setiosflags( ios::skipws) 忽略前導的空格
[*]setiosflags( ios::uppercase) 資料以十六進製制形式輸出時字母以大寫表示
[*]setiosflags( ios::lowercase) 資料以十六進製制形式輸出時宇母以小寫表示
[*]setiosflags(ios::showpos) 輸出正數時給出「+」號
[/list]需要注意的是: 如果使用了控制符,在程式單位的開頭除了要加iostream標頭檔案外,還要加iomanip標頭檔案。
舉例, 輸出雙精度數:
double a=123.456789012345; // 對a賦初值
1) cout<
#include
using namespace std;
int main( )
輸出如下:
123.46 (字段寬度為10,右對齊,取兩位小數)
3.14
-3214.67
先統一設定定點形式輸出、取兩位小數、右對齊。這些設定對其後的輸出均有效(除非重新設定),而setw只對其後乙個輸出項有效,因此必須在輸出a,b,c之前都要寫setw(10)。
C 輸入cout與輸出cin
輸入和輸出並不是c 語言中的正式組成成分。c和c 本身都沒有為輸入和輸出提供專門的語句結構。輸入輸出不是由c 本身定義的,而是在編譯系統提供的i o庫中定義的。c 的輸出和輸入是用 流 stream 的方式實現的。圖3.2和圖3.3表示c 通過流進行輸入輸出的過程。有關流物件cin cout和流運算...
C 輸入與輸出 cin與cout
輸入輸出不是由c 本身定義的,而是在編譯系統提供的i o庫中定義的,用 流 stream 的方式實現的 有關流物件cin cout和流運算子的定義等資訊是存放在c 的輸入輸出流庫中的,故如果在程式中使用cin cout和流運算子,就必須使用預處理命令把頭檔案stream包含到本檔案中 include...
c 標準輸入輸出流 cin和cout
輸入原理及簡介 cin為c 標準輸入流物件,包含在iostream中。cin直接從輸入緩衝區中取出資料,當遇到 回車鍵,空格鍵,換行鍵時結束,並將取出的資料賦給 後的變數,該變數可以為任意資料型別。用法表示式 cin 變數1 變數2 實現 include using namespace std in...