C++ 如何";“参数化”;输出流?

C++ 如何";“参数化”;输出流?,c++,stream,iostream,fstream,ostream,C++,Stream,Iostream,Fstream,Ostream,我怎样才能使这个伪代码工作 std::ostream ostr; std::ofstream ofstr; if(condition) { ostr = std::cout; } else { ofstr.open("file.txt"); ostr = ofstr; } ostr << "Hello" << std::endl; std::ostream-ost; std::of stream of str; 如果(条件){ ostr=s

我怎样才能使这个伪代码工作

std::ostream  ostr;
std::ofstream ofstr;

if(condition) {
    ostr = std::cout;
}
else {
    ofstr.open("file.txt");
    ostr = ofstr;
}

ostr << "Hello" << std::endl;
std::ostream-ost;
std::of stream of str;
如果(条件){
ostr=std::cout;
}
否则{
open(“file.txt”);
ostr=ofstr;
}

ostr在您的情况下,您可以使用三元运算符:

std::ostream& ostr = (condition ?
                      std::cout :
                      (ofstr.open("file.txt"), ofstr)); // Comma operator also used
                                                        // To allow fstream initialization.

此实现可以切换到其他流:

std::ofstream ofstr;
std::ostream *ostr;

ofstr.open("file.txt");

ostr = &ofstr;
*ostr << "test --> file\n" << std::endl;

ostr = &std::cout;
*ostr << "test --> stdout\n" << std::endl;
std::of stream of str;
标准::ostream*ostr;
open(“file.txt”);
ostr=&ofstr;

*ostr链接的问题不是完全重复的,但它已经足够接近了,并且被接受的答案显示了问题的解决方案。在您的情况下,您可以使用三元运算符:
std::ostream&ostr=(条件?std::cout:(ofstr.open(“file.txt”),ofstr))@Jarod42:刚刚试过;当
条件
为真时,它工作,我在cout上得到输出,但当
条件
为假时,我没有得到写入的文件。要同时向多个流发送数据: