C 輸入 輸出

2021-09-23 05:52:01 字數 4496 閱讀 3872

講到輸入輸出我們首先應該明白的是:輸入和輸出並不是 c++ 語言中的正式組成成分。因為 c 和 c++ 本身都沒有為輸入和輸出提供專門的語句結構。

在 c 語言中,輸入和輸出的功能是通過呼叫 scanf 函式和 printf 函式來實現的,在 c++ 中是通過呼叫輸入輸出流庫中的流物件 cin 和 cout 實現的。也就是說,輸入輸出不是由 c++ 本身定義的,而是在編譯系統提供的 i/o 庫中定義的。

c++ 的輸出和輸入是用「流」(stream)的方式實現的。「流」指的是來自裝置或傳給裝置的乙個資料流。 所謂資料流就是由一系列位元組組成的,這些位元組是按進入 「流」 的順序排列的。

cin 是輸入流物件的名字,「 >> 」流提取運算子,它的作用是從預設的輸入裝置(一般為鍵盤)的輸入流中提取若干個位元組送到計算機記憶體區中指定的變數。

cout 是輸出流物件的名字,「 << 」流插入運算子(也可以稱流插入操作符),它的作用是將需要輸出的內容插入到輸出流中,預設的輸入裝置是顯示器。

上邊我們學習了在 c++ 中是如何進行輸入輸出的,那麼接下來我們就來看看在c++ 中輸入輸出時需要注意的問題:

因為在 c++ 中有關流物件cincout和流運算子的定義等資訊是存放在 c++ 的輸入輸出流庫中的,因此如果在程式中使用cin,cout和流運算子時,就不許使用預處理指令把同檔案stream包含到本檔案中。即:包含標頭檔案以及標準命名空間std包含標準命名空間std是因為早期標準庫將所有功能在全域性域中實現,宣告在.h字尾的標頭檔案中,使用時只需包含對應標頭檔案即可,後來將其實現在std命名空間下,為了和 c 標頭檔案區分,也為了正確使用命名空間,規定 c++ 標頭檔案不帶.h;舊編譯器(vc 6.0)中還支援格式,後續編譯器已不支援,因此推薦使用+std的方式。

接下來我們就來看乙個例子:

#include using namespace std;

int main()

解釋:上面這段**的功能是:在顯示器上輸出乙個hello world!!!字串

endl的作用是在輸出結束後進行換行操作

cout語句的一般格式為:

cout << 表示式1 << 表示式2 << ··· << 表示式n;

解釋:在定義流物件時,系統會在記憶體中開闢一段緩衝區,用來暫時存放輸入輸出流的資料。

在執行cout語句時,並不是插入乙個資料就馬上輸出乙個資料,而是先把插入的資料順序存放在輸出緩衝區中,知道輸出緩衝區滿了,或者遇到cout語句中的endl(或'\n',ends,fiush)為止,此時將緩衝區中已有的資料一起輸出,並且清空緩衝區。

系統提供的標準輸出流中的資料向系統預設的裝置(一般為顯示器)輸出。

乙個cout語句可以分寫成若干行。如:

cout << "this is a c++ program." << endl;

可以寫成:

cout << "this is " // 注意行末尾無分號

<< "a c++ "

<< "program."

<< endl; // 語句最後有分號

也可以寫成多個cout語句,即:

cout << "this is "; // 語句末尾有分號

cout << "a c++ ";

cout << "program.";

cout << endl;

由於前兩個cout語句中的字串最後沒有換行符,因此下一行的字串緊接著上一行的末尾輸出,所以以上三種書寫方式最終的輸出結果均為:

this is a c++ program.不能用乙個插入運算子<<插入多個輸出項。如:

cout << a, b, c;這樣的用法是錯誤的,不允許一次插入多項。而:

cout << a + b + c;這樣的用法就是正確的,因為這是乙個表示式,它作為乙個輸出項使用

c++ 輸入輸出更加方便,不需要增加資料格式控制,比如:整形–%d,字元–%c 等

因為在使用cout時,系統會自動判別輸出資料的型別,是輸出的資料按照相應的型別輸出。

cin語句的一般格式為:

cin >> 變數1 >> 變數2 >> ··· >> 變數n;

解釋:cout類似,乙個cin語句可以分寫成若干行。如:

cin >> a >> b >> c >> d;

可以寫成:

cin >> a// 注意行末尾無分號

>> b// 這樣寫可能看起來清晰些

>> c

>> d;

也可以寫成:

cin >> a;

cin >> b;

cin >> c;

cin >> d;

以上 3 種寫法均可以從鍵盤輸入:

1 2 3 4 

也可以分多行輸入資料:

12 3

4在使用cin輸入時,系統也會根據變數的型別從輸入流中提取相應長度的位元組。如:

char c1, c2;

int a;

float b;

cin >> c1 >> c2 >> a >> b;

如果輸入

1234 56.78

系統會取第 1 個字元『1』給字元變數c1,取第 2 個字元'2'給字元變數c2,再取34給整形變數a,最後取56.78給實型變數b.

注意:34後面應該有空格,以便和56.78分隔開。所以在進行輸入時也可以寫成:1 2 34 56.78(在 1 和 2 之間也有空格)

以這種格式輸入時,在從輸入流中提取了字元'1'送給c1,遇到第 2 個字元,是乙個空格,系統把空格作為資料之間的分隔符,不予提取,而是提取後面乙個字元'2'送給c2,然後在分別提取3456.78ab.

不能用cin語句把空格字元和回車換行符作為字元輸入給字元變數,因為它們將被跳過。如果想將空格字元或回車換行符(或任何其他鍵盤上的字元)輸入給字元變數,就可以使用getchar函式。

接下來就來看乙個具體的例子吧:

#include using namespace std;

int main()

C 輸入輸出

一 標準輸入函式cin 不知道說它是個函式對還是不對,它是代表標準的輸入裝置 鍵盤。他是屬於流的,他的用法和流的用法是一樣的。也就是 cin 變數 小小的說明一下,輸入多個變數可以寫在一行,如 cin x y z 這樣寫不是不允許,而是不好看,如果是不同的變數型別,那就更是沒頭沒腦了。除了你,人家是...

C 輸入輸出

c語言不提供輸入輸出語句,輸入輸出操作有函式來實現。c的標準庫函式中提供了許多輸入輸出函式,如printf scanf 等,使用時需要新增相應的標頭檔案 scanf d num 逗號前為控制語句,後半部分為變數的位址。當中 d是輸入格式控制字串 scanf 函式在接受輸入資料是預設不採集空格,回車,...

C 輸入輸出

c 中的一些常用輸入輸出 include include include include using namespace std void win io 由控制台輸入 void file io 檔案進行輸入 in file.close void file io 2 in file.close in ...