Udostępnij za pośrednictwem


basic_streambuf::overflow

Chronione funkcji wirtualnych może być wywoływana po wstawieniu nowego znaku do pełnego buforu.

virtual int_type overflow( 
   int_type _Meta = traits_type::eof( ) 
);

Parametry

  • _Meta
    Znak, aby wstawić do bufora, lub traits_type::eof.

Wartość zwracana

Jeśli funkcja nie powiodła się, zwraca traits_type::eof lub zgłasza wyjątek.W przeciwnym wypadku zwraca traits_type::not_eof(_Meta).Domyślne zachowanie polega na powrót traits_type::eof.

Uwagi

Jeśli _Meta nie porównuje równa traits_type::eof, funkcja chroniony członek wirtualnego usiłują wstawienie elementu traits_type::to_char_type(_Meta) do strumienia wyjściowego.To zrobić na różne sposoby:

  • Jeśli write position jest dostępny, to można przechowywać element do pozycji zapisu i przyrost wartości następnej wskaźnik do buforu wyjściowego.

  • To można udostępnić pozycję zapisu przez alokacji nowe lub dodatkowe miejsca dla buforu wyjściowego.

  • Może to zrobić pozycję zapisu dostępne przez pisanie, do niektórych zewnętrznego miejsca docelowego, niektóre lub wszystkie elementy między początkiem i dalej wskaźniki dla buforu wyjściowego.

Funkcja wirtualnego przepełnienia, wraz z sync i niedomiar funkcje, określa właściwości klas pochodnych streambuf.Każda klasa pochodna może inaczej implementować przepełnienia, ale interfejs z wywołanie klasy strumień jest taka sama.

overflow Funkcja nazywa się najczęściej przez społeczeństwa streambuf funkcje, takie jak sputc i sputn kiedy umieścić obszar jest pełna, ale innych klas, łącznie z klasami strumień może wywołać overflow zawsze.

Funkcja zużywa znaków w obszarze umieścić między pbase i pptr wskaźniki i następnie reinitializes obszaru put.overflow Funkcja musi również zużywają nCh (Jeśli nCh nie jest EOF), lub może wybrać umieścić znak w nowym umieścić obszar, tak, że będzie zużywanych na następne połączenie.

Definicja zużywają waha się między klas pochodnych.Na przykład filebuf Klasa zapisuje jej znaków w pliku, podczas gdy strstreambuf klasa utrzymuje je w swoim buforze i rozszerza się (Jeśli bufor jest wyznaczony jako dynamiczny) bufor w odpowiedzi na zaproszenie do przepełnienia.Rozwój ten uzyskuje się przez zwalnianie starych buforów i zastąpienie go jeden nowy, większy.Kursory są dostosowywane w miarę potrzeby.

Wymagania

Nagłówek:<streambuf>

Przestrzeń nazw: std

Zobacz też

Informacje

basic_streambuf — Klasa

iostream Programming

Konwencje iostream