講到輸入和輸出我們首先應該明白的是:輸入和輸出並不是 c++ 語言中的正式組成成分。因為 c 和 c++ 本身都沒有為輸入和輸出提供專門的語句結構。
在 c 語言中,輸入和輸出的功能是通過呼叫 scanf 函式和 printf 函式來實現的,在 c++ 中是通過呼叫輸入輸出流庫中的流物件 cin 和 cout 實現的。也就是說,輸入輸出不是由 c++ 本身定義的,而是在編譯系統提供的 i/o 庫中定義的。
c++ 的輸出和輸入是用「流」(stream)的方式實現的。「流」指的是來自裝置或傳給裝置的乙個資料流。 所謂資料流就是由一系列位元組組成的,這些位元組是按進入 「流」 的順序排列的。
cin 是輸入流物件的名字,「 >> 」是流提取運算子,它的作用是從預設的輸入裝置(一般為鍵盤)的輸入流中提取若干個位元組送到計算機記憶體區中指定的變數。
cout 是輸出流物件的名字,「 << 」是流插入運算子(也可以稱流插入操作符),它的作用是將需要輸出的內容插入到輸出流中,預設的輸入裝置是顯示器。
上邊我們學習了在 c++ 中是如何進行輸入輸出的,那麼接下來我們就來看看在c++ 中輸入輸出時需要注意的問題:
因為在 c++ 中有關流物件cin
,cout
和流運算子的定義等資訊是存放在 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
,然後在分別提取34
和56.78
給a
和b
.不能用
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 ...