我愿做这样的事情:堆栈上的C++ stream polymorphy?
std::wistream input = std::wifstream(text);
if (!input) input = std::wistringstream(text);
// read from input
即有文字或者解释为一个文件名,或者,如果没有这样的文件,使用它的内容,而不是文件的内容。
我当然可以使用std::wistream * input
,然后new
和delete
作为实际的流。但是,我必须将所有这些封装在一个类中(构造函数和析构函数,即适当的RAII,以实现异常安全性)。
是否有另一种方法在堆栈上做到这一点?
您可以使用智能指针(如auto_ptr)自动处理分配/释放,具体取决于您以后使用该变量。 – DeCaf
为什么在地球上会有人想要这样做? –
@Alexandre C .:因为我通常希望它能够处理文件,但是为了测试,我还想在命令行中快速指定一些文件内容示例。 –