I can do
std::ostream& out = condition ? std::cout : std::ofstream(filename);
但如果出现以下情况我该如何关闭out = std::ofstream(filename)
?
忘记关闭一会儿,你的代码:
std::ostream& out = condition ? std::cout : of.open(filename);
一开始就不会编译。std::ofstream::open()
不返回流——它返回void
。您可以将其修复为:
std::ostream& out = condition ? std::cout : (of.open(filename), of);
现在回到关闭流,好吧,您不必这样做,因为当流对象超出范围时(即调用析构函数时),析构函数将关闭文件流。所以它会自动为您完成 - 嗯,在 99.99% 的情况下,除非您正在做一些不寻常的事情,在这种情况下您想明确关闭它!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)