Я хотел бы сделать что-то вроде этого:
std::wistream input = std::wifstream(text);
if (!input) input = std::wistringstream(text);
// read from input
т.е. чтобы текст либо интерпретировался как имя файла, либо, если такого файла не существует, использовалось его содержимое вместо содержимого файла.
Конечно, я мог бы использовать std::wistream * input
и затем new
и delete
для фактических потоков. Но тогда мне придется инкапсулировать все это в класс (конструктор и деструктор, т.е. надлежащий RAII для безопасности исключений).
Есть ли другой способ сделать это на стеке?