处理文件时,首选以下两个示例中的哪一个? 一个人提供比另一个更好的表现吗?有什么不同吗?
ifstream input("input_file.txt");
ofstream output("output_file.txt");
VS
fstream input("input_file.txt",istream::in);
fstream output("output_file.txt",ostream::out);
答案 0 :(得分:18)
在性能方面,这种情况可能只有微不足道的差异。充其量只能节省一点记忆。
重要的是第一种情况有助于语义:可以在输入,输出或两者中打开std::fstream
。因此,您需要在使用std::ifstream
时确认声明,std::ofstream
将明确您正在做的事情。第二种情况有更多人为错误的空间,这就是应该避免的原因。
我自己的经验法则是,当您需要对文件的读写访问权限时,才使用std::fstream
。仅在这种情况下。
答案 1 :(得分:0)
除非您需要不同的行为,否则只需使用更简洁的表单...否则只是为更多错误创造空间。 FWIW,如果可能的话,我更喜欢对流进行范围调查并检查open是这样的:
if (std::ifstream input{"input_file.txt"})
...use input...
else
...log and/or throw...