C++ cin判斷輸入結束(讀取結束)


轉載自:http://c.biancheng.net/view/277.html

cin 可以用來從鍵盤輸入數據;將標准輸入重定向為文件后,cin 也可以用來從文件中讀入數據。在輸入數據的多少不確定,且沒有結束標志的情況下,該如何判斷輸入數據已經讀完了呢?例如,輸入若干個正整數,輸出其中的最大值,程序該如何編寫?

代碼如下(用cin判斷輸入結束):

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     int maxN = 0;
 7     while (cin >> n){  //輸入沒有結束,條件就為真
 8         if (maxN < n)
 9             maxN = n;
10     }
11     cout << maxN;
12     return 0;
13 }

假設該程序編譯得到的可執行程序是 mycin.exe。在 Windows 系統中,通過鍵盤輸入時,在單獨的一行按 Ctrl+Z 鍵后再按回車鍵,就代表輸入結束。因此程序運行時,輸入若干個正整數后換行,再按 Ctrl+Z 鍵和回車鍵,程序就會輸出最大值並結束。即cin>>n這個表達式在碰到 Ctrl +Z 時,會返回 false。

在 UNIX/Linux 系統中,Ctrl+D 代表輸入結束。

如果將標准輸入重定向為某個文件,如在程序開始添加freopen("test.txt", "r", stdin);語句,或者不添加上述語句,但是在 Windows 的“命令提示符”窗口中輸入:

mycin < test.txt

則都能使得本程序不再從鍵盤輸入數據,而是從 test.txt 文件輸入數據(前提是 test.txt 文件和 mycin.exe 在同一個文件夾中)。在這種情況下,test.txt 文件中並不需要包含 Ctrl+Z,只要有用空格或回車隔開的若干個正整數即可。

cin 讀到文件末尾時,cin>>n就會返回 false,從而導致程序結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM