ある場合は、新しい、つまり名前のファイルにargv[1]
データを入れたいと思います。しかし、そのような議論がない場合は、代わりに使用したいと思います。ofstream(argv[1])
argv[1]
cout
私はもう試した
std::ostream& output = argc >= 1 ? std::fstream(argv[0]) : std::cout;
ただし、コンストラクターが削除されているため、コンパイルされません。
fstreamインスタンスを作成し、必要になるまで開くのを遅らせることができます。
std::fstream file;
if (argc > 1)
file.open(argv[1]);
std::ostream& output = argc > 1 ? file : std::cout;
これが真のC++11ソリューションです。
ostream& out = [=]() -> ostream& {
if (argc>1) {
static fstream fs(argv[1]);
return fs;
}
return cout;
}();
異なるタイプの三項演算子を使用することはできません。コンパイラーは、結果のタイプを決定できません。
あなたは試すことができます
if (argc >= 1)
{
std::fstream Output(argv[0]);
Process_data(Output);
}
else
Process_data(std::cout);