有没有相当于fstream的提升会导致无法打开文件?

时间:2014-01-03 18:08:03

标签: c++ boost fstream

就像标题所说的有一种提升方式来完成与fstream相同的东西,但是它会在失败时抛出差异,而不是在流中设置一些标志?
我知道我可以手动检查并返回/抛出,但我不想用支票来判断我的代码......

1 个答案:

答案 0 :(得分:1)

我的想法:

使用带有异常的流和'不用带检查的代码'将会 在代码中生成无用的诊断消息:

#include <iostream>
#include <fstream>

int main() {
    std::fstream f;
    f.exceptions(std::ios_base::failbit);
    try {
        f.open("Not-Existing");
        int formatted_value;
        f >> formatted_value; // No matching input.
        // ... and imagine more
        if(f.eof()) { /* To ensure the entire stream is consumed, is not handled */ }
    }
    catch(const std::exception& e) {
        std::cerr << "Failure [Something turned out wrong]" << std::endl;
    }
}