Форум программистов, компьютерный форум CyberForum.ru

Перенаправление потока stdout - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
tibs
0 / 0 / 0
Регистрация: 19.11.2011
Сообщений: 11
27.11.2011, 16:55     Перенаправление потока stdout #1
Пишу программу с использованием библиотеки SDL.h. Дело в том, что в ней переопределена функция main и стандартные потоки завязанные на файлы (stdout.txt), что не очень удобно. Идея - вернуть поток на консоль, чтобы во время приложения работало 2 окна - 1 графическое (основное), 2 консоль.. И во время выполнения действий в основном окне, вся инфа о работе идет на консоль, а не в файл как сейчас. Помогите осуществить данное.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
27.11.2011, 17:31     Перенаправление потока stdout #2
В винде можно AllocConsole, открыть CreateFile'ом CONOUT$, SetStdHandle. В невинде - не знаю.
tibs
0 / 0 / 0
Регистрация: 19.11.2011
Сообщений: 11
27.11.2011, 17:41  [ТС]     Перенаправление потока stdout #3
Цитата Сообщение от Somebody Посмотреть сообщение
В винде можно AllocConsole, открыть CreateFile'ом CONOUT$, SetStdHandle. В невинде - не знаю.
напиши мне, пожалуйста, полную эту команду и ее где надо написать? Первой строкой в main.

PS: на винде
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
27.11.2011, 20:46     Перенаправление потока stdout #4
Если консоли нет, то
C++
1
AllocConsole();
Для WinApi'шных функций
C++
1
2
3
HANDLE h = CreateFile("CONOUT$", GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
SetStdHandle(STD_OUTPUT_HANDLE, h);
Для сишных прокатывает
C++
1
freopen("CONOUT$", "r+", stdout);
хотя есть некоторые сомнения насчёт стопроцентной работоспособности.
tibs
0 / 0 / 0
Регистрация: 19.11.2011
Сообщений: 11
28.11.2011, 02:28  [ТС]     Перенаправление потока stdout #5
Цитата Сообщение от Somebody Посмотреть сообщение
Для сишных прокатывает
Код C++1 freopen("CONOUT$", "r+", stdout);
эта прокатила, спасибо
Цитата Сообщение от Somebody Посмотреть сообщение
AllocConsole();
а для нее что подключить нужно?
Bers
Заблокирован
28.11.2011, 02:29     Перенаправление потока stdout #6
Цитата Сообщение от tibs Посмотреть сообщение
а для нее что подключить нужно?
http://vsokovikov.narod.ru/New_MSDN_...ole/con_fn.htm
Yandex
Объявления
28.11.2011, 02:29     Перенаправление потока stdout
Ответ Создать тему
Опции темы

Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru