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