#include <iostream> using namespace std; int main() { int n; int maxN = 0; while (cin >> n){ //輸入沒有結束,cin 就返回 true,條件就為真 if (maxN < n) maxN = n; } cout << maxN <<endl; return 0; }在 Windows 下執行該程式,先輸入以下整數:
10
30
93
206
8
10↙
30↙
93↙
206↙
8↙
^Z↙
206
↙
表示確認鍵,^Z
表示 Ctrl+Z 組合鍵。
freopen("test.txt", "r", stdin);
語句,或者不新增上述語句,但是在 Windows 的“命令提示字元”視窗中輸入:
mycin < test.txt //假設編譯生成的可執行檔案的名字為 mycin.exe
則都能使得本程式不再從鍵盤輸入資料,而是從 test.txt 檔案輸入資料(前提是 test.txt 檔案和 mycin.exe 在同一個資料夾中)。在這種情況下,test.txt 檔案中並不需要包含 Ctrl+Z,只要有用空格或回車隔開的若干個正整數即可。cin>>n
就會返回 false,從而導致程式結束。例如,假定 test.txt 檔案中的內容如下所示:
112
23123
34 444 55
44
mycin < test.txt
,則程式的輸出是:
23123
>>
過載為成員函數,而且這些成員函數的返回值是 cin 的參照。準確地說,cin>>n
的返回值的確是 istream & 型別的,而 while 語句中的條件表示式的返回值應該是 bool 型別、整數型別或其他和整數型別相容的型別,istream & 顯然和整數型別不相容,為什麼while(cin>>n)
還能成立呢?cin>>n
這樣的表示式也會返回 false。例如下面的程式:
#include <iostream> using namespace std; int main() { int n; while (cin >> n) cout << n << endl; return 0; }程式本該輸入整數,如果輸入了一個字母,則程式就會結束。因為,應該讀入整數時卻讀入了字母也算讀入出錯。