ifstream和ofstream或fstream使用in和out

时间:2015-05-22 04:36:46

标签: c++ fstream ifstream ofstream

处理文件时,首选以下两个示例中的哪一个? 一个人提供比另一个更好的表现吗?有什么不同吗?

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);

2 个答案:

答案 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...