Переопределение stdout / cout
От: e-Inventor Россия  
Дата: 14.11.08 08:59
Оценка:
Здравствуйте

у меня следующая проблема... есть некий класс, у которого есть метод print()
исторически так сложилось, что внутри этого метода используется printf()
который пишет в stdout и менять это нельзя

у меня GUI морда, которая использует этот класс. Мне надо получить
в какую-нибудь переменную вывод этого метода...

пробовал вот таким способом:

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    ios::sync_with_stdio(true);
    streambuf* cout_buf = cout.rdbuf();
    stringbuf my_buf;
    cout.rdbuf(&my_buf);

    cout << "Hello1" << endl;    
    printf( "Hello2\n" );

    cout.rdbuf( cout_buf );
    
    return 0;
}


но при этом Hello2 не попадает в my_buf (
есть вариант сделать FILE f* = freopen( "text_file.txt", "wt", stdout)
тогда вывод всех printf() пойдет в файл... а после его прочитать..
но как-то это мне не нравится

неужели нельзя перехватить вывод printf() минуя файл?

помогите советом, плиз!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.