C++從鍵盤輸入文件結束符


        當我們使用一個istream對象作為條件時,其效果是檢測流的狀態。如果流是有效的,即流未遇到錯誤,那么檢測成功。當遇到文件結束符,或遇到一個無效輸入時(例如需要將輸入讀到一個int變量中,但實際從鍵盤輸入的是字符),istream對象的狀態會變成無效。處於無效的istream對象會是條件變為假。

       當從鍵盤向程序輸入數據時,對於如何指出文件結束符,不同的操作系統有不同的實現。在Windows平台中,輸入文件結束符的方法是:按Ctrl+z,然后按Enter。在Unix或Linux下是按Ctrl+d,無需Enter,當然,由於當你輸入Ctrl+d后,它仍然停留在系統的輸入緩沖區中,所以你還是需要使用一個Enter使其生效。下面是幾個關於該用法的示例:


#include <iostream>
#include <string>

using namespace std;
/*
測試標准輸入cin和文件結束符
測試平台:Windows
*/
int test_string_one();
int test_string_two();
int test_string_three();

int main()
{
    //test_string_one();
    test_string_two();
}
int test_string_one() //第一個程序:輸入的是整數
{
    int num;
    while(cin>>num)
        cout << num << " ";
    return 0;
}
/*
輸入:1 2 3 4 5 Ctrl+d Enter
輸出:1 2 3 4 5
此處之所以循環停止,是因為遇到一個無效輸入(Ctrl+d),而不是遇到了文件結束符。
因為在windows平台,結束符是Ctrl+z,然后按Enter。
例如輸入:1 2 3 4 5 a Enter
輸出仍是:1 2 3 4 5
當然如果該測試用例用於Linux下,那么由於系統的結束符是Ctrl+d,所以雖然輸出一樣,
但是之所以循環停止,是因為到達了文件結束,而不是得到了一個無效輸入。
*/


int test_string_two() //第二個程序:輸入的是字符串
{
    string word;
    while(cin>>word)
        cout << word << " ";
    return 0;
}
/*
輸入:hello world Ctrl+z 回車
輸出:hello world
此處之所以循環停止,是因為遇到一個文件結束符。
因為在windows平台,結束符是Ctrl+z,然后按Enter。
*/


免責聲明!

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



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