【发布时间】:2010-09-26 21:17:58
【问题描述】:
如何根据特定的程序条件将std::ostream 绑定到std::cout 或std::ofstream 对象?尽管由于多种原因这无效,但我想实现在语义上等同于以下内容的东西:
std::ostream out = condition ? &std::cout : std::ofstream(filename);
我见过一些不是异常安全的例子,比如来自http://www2.roguewave.com/support/docs/sourcepro/edition9/html/stdlibug/34-2.html:
int main(int argc, char *argv[])
{
std::ostream* fp; //1
if (argc > 1)
fp = new std::ofstream(argv[1]); //2
else
fp = &std::cout //3
*fp << "Hello world!" << std::endl; //4
if (fp!=&std::cout)
delete fp;
}
有谁知道更好的、异常安全的解决方案?
【问题讨论】:
标签: c++ exception-handling iostream