由于std::ofstream继承自与 ( std::ostreamstd::cout
)的实例相同的类型,因此它们的接口相同,因此将一些方法添加到文件处理流中,但除此之外它们是可互换的。
如上所述,您唯一需要的是,您实际上在两种情况下都以相同的方式实现功能,目前:(通过阅读您的代码段)您不是。
- std::ofstream示例没有任何循环
- std::ofstream片段中的评估顺序不同(因为您不使用
()
)
为了确保无论您是写入文件还是标准输出都使用相同的实现,您可以将代码包装在一个函数中,使其接受对std::ostream的引用,如下面的代码片段所示。
#include <iostream>
#include <fstream>
void
do_whatever (std::ostream& output_stream)
{
int letter[] = {
1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,26
};
for (int i =0; i < 26; ++i)
output_stream << (char) (letter[i] + 'A' - 1) << " ";
}
int
main (int argc, char *argv[])
{
std::ofstream file_stream;
file_stream.open ("file.txt");
do_whatever (file_stream);
do_whatever (std::cout);
}