文件读取失败,ios_base::failbit 我有一个简单的C++文件读取程序: int main() { std::string buf; std::ifstream file; file.exceptions(std::if

文件读取失败,ios_base::failbit 我有一个简单的C++文件读取程序: int main() { std::string buf; std::ifstream file; file.exceptions(std::if,c++,file,exception,ifstream,eof,C++,File,Exception,Ifstream,Eof,文件读取失败,ios_base::failbit 我有一个简单的C++文件读取程序: int main() { std::string buf; std::ifstream file; file.exceptions(std::ifstream::failbit | std::ifstream::badbit); try { file.open("C:\\Test11.txt"); char c; while (!(

文件读取失败,ios_base::failbit

我有一个简单的C++文件读取程序:

int main() {
    std::string buf;
    std::ifstream file;
    file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
    try {
        file.open("C:\\Test11.txt");
        char c;
        while (!(file.eof())) {
            file.get(c);
            std::cout << c;         
        }
    }
    catch (std::ifstream::failure e) {
        std::cout << e.what() << std::endl;
        std::cout << e.code() << std::endl;
        std::cout << "Exception opening/reading file";
    }
    file.close();
    return 0;
}
intmain(){
std::字符串buf;
std::ifstream文件;
异常(std::ifstream::failbit | std::ifstream::badbit);
试一试{
打开(“C:\\Test11.txt”);
字符c;
而(!(file.eof())){
file.get(c);

std::cout@Biffen:谢谢!我现在理解了这个问题,但我找不到解决办法。因为在只阅读之后,我们会遇到EOF,并且在同一个地方发生异常。我遗漏了什么吗?你想要什么样的确切行为?@UlrichEckhardt:1)我们想要读取文件并在控制台上显示它。2)如果出现任何错误,例如a)文件不存在b)由于磁盘问题导致读取问题我们希望捕获异常并显示“异常打开/读取文件”您可以在布尔表达式中使用该文件来检查它是否已成功打开。您可以将streambuffer的地址流到另一个流中,以便在两个流之间复制数据。您最终可以检查流是否达到EOF,以区分成功与失败。@Biffen:谢谢!我现在理解这个问题,但我找不到解决方法ut.由于只读取之后,我们将遇到EOF,并且在同一个位置发生异常。我是否遗漏了什么?您想要什么具体行为?@UlrichEckhardt:1)我们希望读取文件并在控制台上显示它。2)如果出现任何错误,即。a)文件不存在b)由于我们希望捕获的磁盘问题导致的读取问题异常并显示“异常打开/读取文件”您可以使用布尔表达式中的文件来检查它是否已成功打开。您可以将streambuffer的地址流到另一个流中,以便在两个流之间复制数据。您可以最终检查流是否达到EOF,以区分成功与失败。