【c++基礎】判斷是否到文件末尾-eof函數


前言

讀取文件內容時,需要判斷是否到文件末尾,此時用到eof函數

函數定義

Check whether eofbit is set
Returns true if the eofbit error state flag is set for the stream.
This flag is set by all standard input operations when the End-of-File is reached in the sequence associated with the stream.
Note that the value returned by this function depends on the last operation performed on the stream (and not on the next.
Operations that attempt to read at the End-of-File fail, and thus both the eofbitand the failbitend up set. This function can be used to check whether the failure is due to reaching the End-of-File or to some other reason.
#include <fstream>
std::ios::eof
bool eof() const;

代碼實例

// ios::eof example
#include <iostream>     // std::cout
#include <fstream>      // std::ifstream

int main () 
{ 
    std::ifstream is("example.txt");   // open file
    char c;
    while (is.get(c))                  // loop getting single characters
        std::cout << c;

    if (is.eof())                      // check for EOF
        std::cout << "[EoF reached]\n";
    else
        std::cout << "[error reading]\n";
    is.close();                        // close file
    return 0;
}

問題

何時說明到達末尾呢?

通過測試代碼發現,讀取文件內容之后再檢測是否達到文件末尾。

測試代碼

        while (!in_txt.eof())
        {
            if (in_txt.eof()) std::cout << "[EOF reached in while]" << std::endl;
            getline(in_txt, inputName);
            if (in_txt.eof()) std::cout << "[EOF reached after while]" << std::endl;
            dir = dir1 + inputName;
            dir += ".jpg";
            std::cout << dir << std::endl;
        }

測試輸出

..//FDDB-originalPics//2002/08/07/big/img_1453.jpg
..//FDDB-originalPics//2002/08/02/big/img_760.jpg
[EOF reached after while]
..//FDDB-originalPics//.jpg
[EOF reached]
1: 1
02
..//FDDB-originalPics//2002/07/28/big/img_416.jpg

參考

1.cplusplus.com;

 


免責聲明!

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



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