如果有argv[1]
我想把一些数据放到新的ofstream(argv[1])
ie 文件中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);