У меня тут возникла задача сделать вывод в лог на основе стандартного потокового вывода. Пусть, например, у меня есть фукнция 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 >>