Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::strstreambuf::overflow

      From cppreference.com
      <cpp‎ |io‎ |strstreambuf
       
       
       
       
      protected:
      virtual int_type overflow( int_type c=EOF);
      (deprecated in C++98)
      (removed in C++26)

      Appends the characterc to the put area of the buffer, reallocating if possible.

      1) Ifc==EOF, does nothing.
      2) Otherwise, if the put area has a write position available (pptr()< epptr()), stores the character as if by*pptr()++= c.
      3) Otherwise, if the stream buffer mode is not dynamic or the stream buffer is currently frozen, the function fails and returnsEOF.
      4) Otherwise, the function reallocates (or initially allocates) a dynamic array large enough to hold the contents of the current dynamic array (if any) plus at least one additional write position. If a pointer to the allocating functionpalloc was used in the constructor, that function is called with(*palloc)(n) wheren is the number of bytes to allocate, otherwisenewchar[n] is used. If a pointer to the deallocating functionpfree was used in the constructor, that function is called with(*pfree)(p) to deallocate the previous array, if needed, otherwisedelete[] p is used. If allocation fails, the function fails and returnsEOF.

      Contents

      [edit]Parameters

      c - the character to store in the put area

      [edit]Return value

      Ifc==EOF, returns some value other thanEOF. Otherwise, returns(unsignedchar)(c) on success,EOF on failure.

      [edit]Example

      Run this code
      #include <iostream>#include <strstream> struct mybuf:std::strstreambuf{    int_type overflow(int_type c){std::cout<<"Before overflow(): size of the put area is "<< epptr()-pbase()<<" with "<< epptr()-pptr()<<" write positions available\n";        int_type rc= std::strstreambuf::overflow(c);std::cout<<"After overflow(): size of the put area is "<< epptr()-pbase()<<" with "<< epptr()-pptr()<<" write positions available\n";return rc;}}; int main(){    mybuf sbuf;// read-write dynamic strstreambufstd::iostream stream(&sbuf);     stream<<"Sufficiently long string to overflow the initial allocation, at least "<<" on some systems.";}

      Possible output:

      Before overflow(): size of the put area is 16 with 0 write positions availableAfter overflow(): size of the put area is 32 with 15 write positions availableBefore overflow(): size of the put area is 32 with 0 write positions availableAfter overflow(): size of the put area is 64 with 31 write positions availableBefore overflow(): size of the put area is 64 with 0 write positions availableAfter overflow(): size of the put area is 128 with 63 write positions available

      [edit]See also

      [virtual]
      writes characters to the associated output sequence from the put area
      (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)[edit]
      [virtual]
      appends a character to the output sequence
      (virtual protected member function ofstd::basic_stringbuf<CharT,Traits,Allocator>)[edit]
      [virtual]
      writes characters to the associated file from the put area
      (virtual protected member function ofstd::basic_filebuf<CharT,Traits>)[edit]
      writes one character to the put area and advances the next pointer
      (public member function ofstd::basic_streambuf<CharT,Traits>)[edit]
      inserts a character
      (public member function ofstd::basic_ostream<CharT,Traits>)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/strstreambuf/overflow&oldid=170651"

      [8]ページ先頭

      ©2009-2025 Movatter.jp