提问人:Pietro 提问时间:1/27/2017 更新时间:1/27/2017 访问量:91
如何“parametri化”输出流?
How to "parametrize" an output stream?
问:
我怎样才能使这个伪代码工作?
std::ostream ostr;
std::ofstream ofstr;
if(condition) {
ostr = std::cout;
}
else {
ofstr.open("file.txt");
ostr = ofstr;
}
ostr << "Hello" << std::endl;
这不会编译,因为没有公共默认构造函数。std::ostream
答:
1赞
Jarod42
1/27/2017
#1
在您的情况下,您可以使用三元运算符:
std::ostream& ostr = (condition ?
std::cout :
(ofstr.open("file.txt"), ofstr)); // Comma operator also used
// To allow fstream initialization.
0赞
Pietro
1/27/2017
#2
此实现可以切换到其他流:
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::ostream& ostr = (condition ? std::cout : (ofstr.open("file.txt"), ofstr));
condition
condition