LINUX.ORG.RU

потерялся std::streambuf::get


0

0

захотелось тут посмотреть как определены методы get() и rdbuf() в std::streambuf. А их в классе просто не оказалось :) Искал define-ы, не нашёл.

Кто знает где они определены ?

>захотелось тут посмотреть как определены методы get() и rdbuf() в std::streambuf. А их в классе просто не оказалось :) Искал define-ы, не нашёл.

>Кто знает где они определены ?

А их и нет в std::streambuf. Они в std::stringstream. http://www.cplusplus.com/reference/iostream/streambuf/ и http://www.cppreference.com/cppsstream/index.html

Sectoid ★★★★★
()
Ответ на: комментарий от fghj

std::streambuf - это typedef для std::basic_streambuf<char>.

std::basic_streambuf родителей не имеет.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от Sectoid

вобщем есть библиотека libserial для работы с COM портом.
Там есть класс SerialStreamBuf, унаследованный от std::streambuf:

namespace LibSerial
{
   class SerialStreamBuf : public std::streambuf
   {
      public:
      ...
   }
}

Использование такое:

LibSerial::SerialStreamBuf serial_port;
// инициализация serial_port...

while(serial_port.rdbuf()->in_avail() > 0)
   serial_port.get(ch);

---------------------

Как это работает ? :)

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от mv

>>Какое конкретно место не понятно? :)

serial_port.get(ch)

и

serial_port.rdbuf()

таких методов в LibSerial::SerialStreamBuf и в std::streambuf нет. :)

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от alex_custov

00118   template<typename _CharT, typename _Traits>
00119     class basic_streambuf 
00120     {
00121     public:
...
00139       
00140       friend class basic_ios<char_type, traits_type>;

mv ★★★★★
()
Ответ на: комментарий от mv

и что ? :)

Это говорит о том, что объкты std::basic_ios'a могут обрашаться к внутренним данным объекта std::streambuf'a как к своим.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от alex_custov

Мозго@бство :-\

Использование в примерах libserial такое:

class SerialStream : public std::iostream
...
    SerialStream serial_port ;
...
    while( serial_port.rdbuf()->in_avail() > 0  )
    {
        char next_byte;
        serial_port.get(next_byte);
        std::cerr << std::hex << (int)next_byte << " ";
    }

mv ★★★★★
()
Ответ на: комментарий от alex_custov

А он у тебя вообще собирался, пример тот?

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.