C/C++程式設計:輸入輸出
阿新 • • 發佈:2021-02-02
技術標籤:# C++
C++語言並未定義任何輸入輸出(IO)語句,而是使用了一個全面的標準庫提供IO機制。一般我們只需要瞭解IO庫中一部分基本概念和操作就可以滿足需求了
最基本的庫是iostream。
理論
兩個基礎型別
- iostream包含了兩個基礎型別istream和ostream,分別表示輸入流和輸出流
- 一個流就是一個字元序列,是從IO裝置讀出或者寫入IO裝置的
- 術語“流”可以理解為:隨著時間的推移,字元是順序生成或者消耗的
四個標準輸入輸出物件
標準庫定義了4個IO物件。
- 標準輸入cin:用來處理輸入
- 標準輸出cout:用來處理輸出
- 標準錯誤cerr:用來輸出警告和錯誤訊息
- clog:用來輸出程式執行時的一般性訊息
系統通常將程式所執行的視窗與這些物件關聯起來。因此,當我們讀取cin時,資料將從程式正在執行的視窗輸入。
cout,cerr、clog寫入資料時,會寫到同一個視窗
示例
輸入兩個數,然後求和
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
}
- std::endl:寫入endl,endl是一個被稱為操作符的特殊值。寫入endl的效果是結束當前行,並將與裝置關聯的緩衝區中的內容刷到裝置中。緩衝重新整理裝置可以保證目前位置程式產生的所有輸出都真正寫入輸出流中,而不是在記憶體中等待
std
:支出cout
和endl
是定義在名為std的名稱空間中。名稱空間可以幫助我們避免名稱衝突。標準庫定義的所有名字都在std中
讀取數量不定的輸入資料
#include <iostream>
int main()
{
int sum = 0, value = 0;
while (std::cin >> value)
sum += value;
std::cout << "Sum is : " << sum << std::endl;
return 0;
}
- std::cin >> value:從標準輸入讀取一個數,儲存在value中
- while (std::cin >> value): 檢測流的狀態
- 流有效(沒有錯誤),檢測成功
- 遇到檔案結束符,或者輸出錯誤(比如輸入的值不是一個整數),流狀態變為無效
- windows輸入檔案結束符的方法是Ctrl+Z,然後Enter或者Return
- Unix輸入檔案結束符的方法是Ctrl+D
練習
#include <iostream>
int main()
{
std::cout << "Hello, World" << std::endl;
}
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The product of " << v1 << " and " << v2
<< " is " << v1 * v2 << std::endl;
}
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The product of ";
std::cout << v1;
std::cout << " and ";
std::cout << v2;
std::cout << " is ";
std::cout << v1 * v2;
std::cout << std::endl;
}
- 不合法,多了;
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1//; error: expected primary-expression before '<<' token
<< " and " << v2
<< " is " << v1 + v2 << std::endl;
}