如果我到达文件C ++的结尾,如何关闭文件

时间:2019-03-04 00:41:48

标签: c++

例如-

std::string ans;
char b = 0;

void readtest(std::ifstream &file) {
    char a;
    while (true) {
        while (file.get(a)) {
            if (a == b) {
                ans += a;
                return;
            }
        }
        if (/*If it reaches end of file*/ false) { /*Here if it reaches end
                                                    of file i want to reset it*/
            if (!ans.empty()) {
                std::cout << ans << std::endl;
                ans = "";
            }
            if (b < 127) {
                b++;
            }
            else {
                b = 0;
            }
            file.close();
            file.open("test.txt", std::ios::binary);
        }
    }
}
int main() {
    std::ifstream file("test.txt", std::ios::binary);
    while (true) {
        readtest(file);
    }
}

任何想法,只有在文件读取到文件末尾时,才可以关闭和打开文件。例如,test.txt具有abcdefg \ 0,一旦达到\ 0,请关闭该文件并再次打开它,以便它可以从头开始。我知道代码有点长,可能很复杂,但感谢您阅读。

1 个答案:

答案 0 :(得分:1)

您可以通过检查eof()或正在使用的get()版本的返回值来检查是否已到达文件末尾。例如:

if (file.get(a))
{
    //read succeeded
}
else
{
    //read failed, potentially due to reaching the end of the file
}

在这里,get()返回流,将其转换为布尔值时将得到!fail()的值。

要再次从文件开头开始读取,请使用seekg()。进行file.seekg(0)会将输入位置指示符设置为0,即文件的开头。

在使用seekg()调用file.clear()之前,您可能需要清除故障和EOF标志。