Как я могу сделать этот псевдокод?Как «параметризовать» выходной поток?
std::ostream ostr;
std::ofstream ofstr;
if(condition) {
ostr = std::cout;
}
else {
ofstr.open("file.txt");
ostr = ofstr;
}
ostr << "Hello" << std::endl;
Это не компилируется, так как std::ostream
не имеет конструктор по умолчанию.
Связанный вопрос не является _exact_ дубликат, но это достаточно близко, и принятый ответ показывает решение вашей проблемы. – Useless
В вашем случае вы можете использовать тернарный оператор: 'std :: ostream & ostr = (условие? Std :: cout: (ofstr.open (" file.txt "), ofstr));' – Jarod42
@ Jarod42: просто попробовал; он работает, когда 'condition' истинно, и я получаю вывод на cout, но я не получаю никакого файла, записанного, когда' condition' является ложным. – Pietro