首先說我們最常用的兩個全域對象cin和cout,以下摘自MSDN:
You can then extract values from cin or wcin to read the standard input. The rules for doing so are outlined in the description of the class basic_istream Class. You can also insert values to cout or wcout to write the standard output. The rules for doing so are outlined in the description of the class basic_ostream Class.
可以看出,其中cin是istream的對象,可以從標準輸入中提取資料,而cout是 ostream的對象,可以向標準輸出中輸出資料。
什麼是標準輸入和標準輸出呢?可能對於我們這些90後 來說不是那麼容易理解的,畢竟這是字元介面的概念,而我們在開始接觸電腦的時候就已經是普遍的 windows圖形介面的作業系統了。但是windows作業系統還是為我們提供了一個類比dos這種字元介面的程式cmd ,讓我們大致對這個有一定的瞭解。而在Linux系統中我們更容易說清楚這個概念:在執行一個shell命令時, 會預設開啟三個標準檔案,即標準輸入檔案(stdin),通常對應終端的鍵盤;標準輸出檔案(stdout)和標 准錯誤輸出檔案(stderr),這兩個檔案都對應終端的螢幕。進程將從標準輸入檔案中得到輸入資料,將正常 輸出資料輸出到標準輸出檔案,而將錯誤資訊送到標準錯誤檔案中。
這樣說比較瞭解了吧,因為我們 在windows下面寫一個win32 控制台應用程式的時候,其實我們的這個程式就是類似於Linux中執行在shell中 的命令,所以這個程式在執行的時候當然可以帶有參數(就是main函數的參數int argc和char* argv[]了), 而且有標準輸入緩衝區和標準輸出緩衝區的概念了。只不過我們在windows下剛開始學習程式設計語言的時候,總 是會用一些圖形介面的IDE(例如VC++6.0就是我的啟蒙IDE),所以對這個程式的運行機制並不是很清楚,只 知道摁一下運行按鍵就自動完成了編譯、串連、開啟一個cmd並直接運行我們寫的這個程式了。
有了標 准輸入和輸出的概念(最好把他們像Linux裡面一樣看成是裝置檔案),接下來就要說一下這個cin和這個cout 到底是怎麼完成輸入輸出機制的了。首先來看一下下面這個例子:
#include <iostream> #include <string> using namespace std;int main() { int j = 0; while(++j>0) for(int i=0;i>0;i++); string str; cin >> str; cout << str << endl; system("pause"); }