首頁>Club>
11
回覆列表
  • 1 # 使用者834195712159

    程式碼示例:

    ofstream ofs("a.txt");

    int n = 1;

    while (--n) { //不進入迴圈體

    ofs<<n<<"\t";

    }

    ofs.close();

    int x=5,z = 0;

    ifstream ifs("a.txt");

    while (!ifs.eof())

    {

    cout<<ifs.eofbit<<endl; //輸出1

    x=ifs.get(); -------------》》輸出-1,此時ifs指向檔案結束符,所以若直接用get()取出,則會出錯,出錯的表示形式就是輸出為-1,所以這個-1表示的是這是一個表示檔案結束符,沒有其他的數值含義。

    // ifs>>x; ----------------》》 輸出為5,這種寫法與x=ifs.get()不同,在這種形式下,ifs指向檔案結束符,所以ifs並沒有實際的值,將ifs檔案流取到的值賦給x,因為ifs沒有值,所以此時x保持不變。

    ++z;

    cout<<x<<"\t"<<flush;

    }

    ifs.close();

    可知此時由於n=1,導致a.txt是空的,但是在從a.txt讀時,首先判斷ifs是否為EOF,程式這時進入迴圈,說明不是EOF,並讀出此時eofbit為1(true),輸出讀取的值。然後再從新判斷ifs是EOF,退出迴圈。

  • 中秋節和大豐收的關聯?
  • 梁宇航總是評論別人的書法,他的評論水平怎麼樣?