![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Есть ли возможность направить вывод из FILE* в массив символов? В заголовочных файлах нашёл такое описание FILE:
Попытки "переуказать" _ptr, _base и _tmpfilename (для посмотреть) ни к чему не привели. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
если используешь iostream то можно вместо fstream передать stringstream.
|
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Так, _base - это указатель на что-то, где лежит строка, положенная в fprintf. Но перенацеливание _base, опять же, результата не даёт.
Добавлено через 54 секунды Не, мне нужен чистый C, stdio.h. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
если есть код работающий с объектом fstream, то можно вместо fstream использовать любой производный от ostream класс например stringstream, да хоть cout. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Есть автоматически генерируемый (сторонним кодом, менять - низзя) кусок кода, который сообщения об ошибках выплёвывает в stderr. Есть мой класс логгера, который принимает строку как char*. Нужно перенаправить этот поток ошибок из stderr в экземпляр класса логгера.
|
|||
|
||||
| JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
EnergoHokum, ну так:
|
||||
|
|||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Не, это - не бинарный файл (который ошибками плюётся), этот кусок кода будет вставлен в проект, и нужно как-то программно перенаправить его.
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
ага, значит, код есть, но переписывать его нельзя. Вынести кусок кода из проекта и скомпилировать в отдельный бинарник тоже нельзя? |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
И запускать его потом из основного CreateProcess-ом? Ну, в принципе, можно, но это - на крайний случай.
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Этот кусок кода компилируется отдельно? Он выводит эти сообщения через какие то стандартные функции (типа fprintf(stderr,...) или аналогично)? Если да - то можно сделать СВОЙ файл, в который включить include'ом этот самый генерируемый файл, и перед этим include'ом вставить соотвествующее количество #define'ов, в которых переопределить все используемые для вывода фкнкции на свои, которые будут делать тоже самое, но писать не в FILE*, а куда тебе надо
|
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
хорошо, можно попробовать пайпы - popen, pclose, fread, fwrite.... Тот процесс запускается в какое-то время твоей программой, она же может в какое хочешь время начать читать из этого потока данные. Это сообщение отредактировал(а) JackYF - 31.10.2007, 16:54 |
|||
|
||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Структура STARTUPINFO для CreateProcess.
Помогло? --------------------
|
||||
|
|||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Пока приказано
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |