iostream庫簡介
iostream庫包含兩個基本基礎類型istream和ostream,分別表示輸入流和輸出流。
一個流就是一個字符序列,是從IO設備讀出或寫入IO設備的。
istream類型對象和ostream類型對象
標準庫iostream定義了4個IO對象,分別爲:
- istream類型對象cin:
- 爲了處理輸入,我們使用一個名爲cin的istream類型對象,這個對象也被稱爲標準輸入。
- ostream類型對象cout、cerr、clog:
- 爲了處理輸出,我們使用一個名爲cout的ostream類型對象,這個對象也被稱爲標準輸出。
- 名爲cerr的ostream類型對象被稱爲標準錯誤,通常用來輸出警告和錯誤消息。
- 名爲clog的ostream類型對象則用來輸出程序運行時的一般性信息。
系統通常將程序所運行的窗口與這些對象關聯起來。因此,
- 當我們讀取cin,數據將從程序正在運行的窗口讀入。
- 當我們向cout、cerr、clog寫入數據時,將會寫到同一個窗口。
輸入運算符和輸出運算符
輸出運算符<<
輸出運算符<<接受兩個運算對象:左側運算對象必須是一個ostream類型對象,右側的運算對象是要打印的值。
輸出運算符<<將給定的值寫到給定的ostream類型對象中。
輸出運算符<<的計算結果就是其左側運算對象,即計算結果就是我們寫入給定值的那個ostream類型對象。
由於輸出運算符<<的計算結果就是其左側運算對象,所以我們可以將一系列輸出請求合併到單一語句中。
cout << "Enter two number:" << endl;
等價於
cout << "Enter two number:";
cout << endl;
輸入運算符>>
輸入運算符>>接受兩個運算對象:左側運算對象必須是一個istream類型對象,右側的運算對象是一個普通對象。
輸入運算符>>從給定的istream類型對象讀入數據,並存入給定對象中。
輸入運算符>>的計算結果就是其左側運算對象。
由於輸入運算符>>的計算結果就是其左側運算對象,所以我們可以將一系列輸入請求合併到單一語句中。
cin >> v1 >> v2;
等價於
cin >> v1;
cin >> v2;
getline函數
由於,在執行讀操作時,string對象會自動忽略開頭的空白(空格符,換行符,製表符等)並從第一個真正的字符開始讀起,直到遇見下一處空白。
有時候,我們希望能在最終得到的字符串中保留輸入的空白符,這時應該用getline函數代替原來的輸入運算符>>。
getline函數的參數是一個輸入流和一個string對象,函數從給定的輸入流中讀入內容,直到遇到換行符爲止(換行符也被讀進來了),然後把所讀到的內容存入那個string對象中去(注意不存換行符)。
getline函數只要一遇到換行符就結束讀取操作並返回結果,哪怕輸入的一開始就是換行符也是如此,此時結果是個空string。
string line;
while (getline(cin , line))
{
cout << line << endl;
}
return 0;
示例demo
cout << "Enter two number : " << endl;
int v1 = 0 , v2 = 0;
cin >> v1 >> v2;
cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << endl;
return 0;