Я немного использовал Каркас журналирования Петру . Это часть его кода:
class Output2FILE
{
public:
static FILE*& Stream() {
static FILE* pStream = stderr;
return pStream;
}
};
Что очень хорошо, поскольку он просто регистрируется в stderr без каких-либо действий, но с функцией, которая впоследствии может быть установлена на что угодно, включая stdout и файл. Тем не менее, я думаю, что этот подход не может быть использован для форматированных данных, поскольку нужно использовать fprintf.
Поэтому я пытаюсь придумать что-то похожее, что позволяет использовать stdout по умолчанию и которое можно переключить в файл, но используя оператор «<<» для форматированных данных. </p>
Может быть, что-то вроде
std::ostream myOutput(std::cout);
с идеей затем сделать myOutput << "Hello" << 1 << 1.5;
. Однако вышеупомянутая строка заставляет компилятор жаловаться.
Какой правильный путь?
Спасибо!