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