создание своего потоковго вывода
От: CyberZX  
Дата: 09.02.05 12:23
Оценка:
У меня тут возникла задача сделать вывод в лог на основе стандартного потокового вывода. Пусть, например, у меня есть фукнция Debug::print(const std::string&);
И мне нужно создать объект ostream Debug::cout, который будет использывать для вывода эту функцию print. Сейчас я просто создаю свой буфер, который наследует от std::basic_stringbuf, и переопределяю там функцию xsputn.

То есть делаю вот так:
namespace Debug
{
    class    debug_streambuf : public std::basic_stringbuf<char, std::char_traits<char> >
    {
    protected:
        typedef    std::char_traits<char>    _Traits;

        virtual int xsputn(const char *_Ptr, int _Count)
        {
            string    str;
            str.append(_Ptr, _Count);
            print(_Ptr);
            return    _Count;
        }
    };

    debug_streambuf    _Mybuf;
    ostream            сout(&_Mybuf);
}

Такой метод работает, но не всегда, например у меня не выводятся арифметические переменные, а только строки. Как добиться нужной мне функциональности правильно?
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.