Я работаю с кодом, который использует глобальный регистратор отладки, который имеет тип std::ofstream*
. Я хотел бы перенаправить это на std :: cout, поскольку я использую код в режиме реального времени, а не пакетный метод, для которого он был разработан.Как перенаправить std :: ofstream в std :: cout?
Можно ли переназначить глобальный указатель std::ofstream*
, который он использует, чтобы std::cout
? Я знаю, что std::ofstream
наследуется от std::ios
, который позволяет изменять буфер потока с помощью метода rdbuf()
, но, к сожалению, появляется std::ofstream
переопределяет rdbuf()
метод, который делает следующий код не компилируется:
gOsTrace = new std::ofstream();
gOsTrace->rdbuf(std::cout.rdbuf());
Есть еще один способ перенаправить объект gOsTrace
, чтобы указать на cout
?
ли регистратор должен использовать 'станд :: ofstream *' Может не быть более общим 'станд :: ostream *'. Тогда все, что вам нужно сделать, это присвоить этому указателю новый поток. –
std :: ios :: tie? http://www.cplusplus.com/reference/ios/ios/tie/ –
@SeverinPappadeux, все, что делает это время от времени. Например, 'std :: cin' сбрасывает' std :: cout', когда есть операция ввода. – chris