crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Перенаправить содержимое std::ostream в widget.
kemiisto
  опции профиля:
сообщение 17.10.2009, 17:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


День добрый!

Есть объект некого класса из сторонней библиотеки. У него есть метод
bool SetLogFile(std::ostream* pos)


Далее, при вызвове определённых методов объекта, логирование происходит в поток pos.

Покажите пример, как сделать, чтоб логирование происходило в какой-нибудь widget. То есть, как перенаправить содержимое std::ostream?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 17.10.2009, 17:56
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kemiisto @ 17.10.2009, 18:35) *
Покажите пример, как сделать, чтоб логирование происходило в какой-нибудь widget. То есть, как перенаправить содержимое std::ostream?


std::ostringstream os;    // создали строковый поток

SetLogFile( &os );    // библиотека выводит строку в поток

// создаем кодек для кодировки в которой выводит текст библиотека (например для венды это CP1251)
QTextCodec *codec = QTextCodec::codecFromName( "Windows-1251" );

// Получили строку QString
QString str = codec->toUnicode( os.str().c_str() );

// А дальше можно добавлять ее в QTextEdit: append( str );
// или добавить ее в QStringListModel
// или ...


Сообщение отредактировал BRE - 17.10.2009, 17:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 18.10.2009, 13:11
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Интересно, возможно ли наследовать свой класс от ostream и переопределить оператор <<. Так было бы более гибко...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 18.10.2009, 23:36
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(DIMEDROLL @ 18.10.2009, 12:11) *
Интересно, возможно ли наследовать свой класс от ostream и переопределить оператор <<. Так было бы более гибко...

Кстати, да. Тоже интересно. :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 19.10.2009, 7:28
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Оператор << - не виртуальный, к тому же там не один оператор, с семейство совмещённых (перегруженных).
Так что его переопределять смысла не имеет. :)
А вот в используют все они вполне виртуальные методы std::ostream, которые вполне можно переопределить. :)

Что и делает std::ostringstream например. :)

П.С. 2 Модераторам. Мне кажется тему лучше перенести раздел "Техника .." или "Другое" - там она более уместна.
Т.к. к Qt имеет довольно опосредованное отношение :)

Сообщение отредактировал Tonal - 19.10.2009, 7:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 23.10.2009, 9:34
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Цитата(Tonal @ 19.10.2009, 7:28) *
А вот в используют все они вполне виртуальные методы std::ostream, которые вполне можно переопределить. :)
Что и делает std::ostringstream например. :)

непонял :-)
какие и где методы виртуальные?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.2.2025, 8:08