我想做这样的事情:
std::wistream input = std::wifstream(text);
if (!input) input = std::wistringstream(text);
// read from input
即将文本解释为文件名,或者如果不存在这样的文件,则使用其内容而不是文件的内容。
我当然可以使用 std::wistream * input
然后为实际流使用 new
和 delete
。但是,我必须将所有这些封装在一个类中(构造函数和析构函数,即用于异常安全的适当 RAII)。
是否有另一种在堆栈上执行此操作的方法?
最佳答案
您可以将与 std::wistream& input
一起工作的逻辑抽象成它自己的函数,然后用 std::wifstream
或 调用它>std::wistringstream
视情况而定。
关于堆栈上的 C++ 流多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621944/