ifstream 和 ofstream 或 fstream 使用 in 和 out
ifstream and ofstream or fstream using in and out
在处理文件时,以下两个示例中的哪个是首选?
一个提供比另一个更好的性能吗?有什么区别吗?
ifstream input("input_file.txt");
ofstream output("output_file.txt");
对
fstream input("input_file.txt",istream::in);
fstream output("output_file.txt",ostream::out);
除非您需要不同的行为,否则请使用更简洁的形式...否则只会为更多错误创造空间。 FWIW,在可能的情况下,我更喜欢确定流的范围并检查打开的工作情况,如下所示:
if (std::ifstream input{"input_file.txt"})
...use input...
else
...log and/or throw...
在性能方面,在这种情况下可能只有微不足道的差异。充其量你只是在节省一点内存。
重要的是第一种情况有助于语义:std::fstream
可以在输入、输出或两者中打开。因此,您需要检查声明以确保在使用 std::ifstream
和 std::ofstream
时可以清楚地说明您在做什么。第二种情况有更多的人为错误空间,这就是应该避免的原因。
我自己的经验法则是在需要对文件进行读写访问时使用 std::fstream
,并且仅在这种情况下使用。
在处理文件时,以下两个示例中的哪个是首选? 一个提供比另一个更好的性能吗?有什么区别吗?
ifstream input("input_file.txt");
ofstream output("output_file.txt");
对
fstream input("input_file.txt",istream::in);
fstream output("output_file.txt",ostream::out);
除非您需要不同的行为,否则请使用更简洁的形式...否则只会为更多错误创造空间。 FWIW,在可能的情况下,我更喜欢确定流的范围并检查打开的工作情况,如下所示:
if (std::ifstream input{"input_file.txt"})
...use input...
else
...log and/or throw...
在性能方面,在这种情况下可能只有微不足道的差异。充其量你只是在节省一点内存。
重要的是第一种情况有助于语义:std::fstream
可以在输入、输出或两者中打开。因此,您需要检查声明以确保在使用 std::ifstream
和 std::ofstream
时可以清楚地说明您在做什么。第二种情况有更多的人为错误空间,这就是应该避免的原因。
我自己的经验法则是在需要对文件进行读写访问时使用 std::fstream
,并且仅在这种情况下使用。