【发布时间】:2023-03-12 23:40:01
【问题描述】:
我想做这样的事情:
std::wistream input = std::wifstream(text);
if (!input) input = std::wistringstream(text);
// read from input
即将文本解释为文件名,或者,如果不存在这样的文件,则使用其内容而不是文件的内容。
我当然可以使用std::wistream * input 然后new 和delete 用于实际的流。但是,我必须将所有这些都封装在一个类中(构造函数和析构函数,即用于异常安全的适当 RAII)。
在堆栈上还有其他方法吗?
【问题讨论】:
-
您可以使用诸如 auto_ptr 之类的智能指针来自动处理分配/解除分配,当然这取决于您以后对变量的使用。
-
为什么会有人想要这样做?
-
@Alexandre C.:因为通常我希望它可以处理文件,但为了测试,我还想在命令行中快速指定一些文件内容示例。
标签: c++ stl stream polymorphism istream