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