Главная » Перенаправление stdout в область памяти (или файл)
Для перенаправления stdout в область памяти (или файл) необходимо написать небольшую конструкцию.
Редирект в память или строку (std::string)

    // make stdout buffer

    char buf[16384]={0};

    int fdpipe[2];

    // make pipe

    _pipe( fdpipe, sizeof(buf), O_BINARY );

    // backup stdout handle

    int old=_dup(_fileno(stdout));

    // replace stdout handle with write-pipe

    _dup2(fdpipe[1], _fileno(stdout));

// test output

    fprint(stdout,"test");

// get collected buffer

    int r = read(fdpipe[0],buf,sizeof(buf));

    buf[r]=0;

    // restore original stdout

    _dup2(old, _fileno(stdout));

    // make string

    std::string str(buf);

    Пример для работы с STL std::cout


    std:stringstream oss;

    std::cout.rdbuf( oss.rdbuf() );

    std::cout << "here's some text";

    Пример редиректа в файл

stream = freopen( "freopen.out", "w", stderr );

    fprintf( stdout, "successfully reassignedn" );

    fclose( stream );
Категория: Языки программирования | Просмотров: 201 Новинка - fprint 55.