Понедельник
07-07-2025
10:46


Форма входа

Приветствую Вас Гость | RSS
www.bavlumir.3dn.ru
Главная Каталог статей Регистрация Вход
Главная » Статьи » Языки програмирования » С/С++

Перенаправление 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 reassigned\n" );
fclose( stream );
Категория: С/С++ | Добавил: Ilyxa (11-10-2008)
Просмотров: 682 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта

Категории каталога
[1]
С/С++ [12]
С# [7]
Delphi & Kylix [0]
Java [0]
Java Script [0]
Pascal [0]
Perl [0]
PHP [0]
VB.NET [0]
Visual Basic [0]
Ассемблер ( [0]
Бейсик [0]

Поиск

Друзья сайта

Мини-чат

Наш опрос
Оцените мой сайт
Всего ответов: 13

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2025