FreeBSD Manual Pages
std::strstr...uf::overflow(3) C++ Standard Libarystd::strstr...uf::overflow(3) NAME std::strstreambuf::overflow - std::strstreambuf::overflow Synopsis protected: virtual int_type overflow (int_type c = EOF); Appends the character c to the put area of the buffer, reallocating if possible. 1) If c==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 returns EOF 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 function palloc was used in the constructor, that function is called with (*pal- loc)(n) where n is the number of bytes to allocate, otherwise new char[n] is used. If a pointer to the deallocating function pfree was used in the constructor, that func- tion is called with (*pfree)(p) to deallocate the previous array, if needed, other- wise delete[] p is used. If allocation fails, the function fails and returns EOF. Parameters c - the character to store in the put area Return value If c==EOF, returns some value other than EOF. Otherwise, returns (unsigned char)(c) on success, EOF on failure. Example // Run this code #include <strstream> #include <iostream> 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 strstreambuf std::iostream stream(&sbuf); stream << "Sufficiently long string to overflow the initial allo- cation, at least " << " on some systems."; } Possible output: Before overflow(): size of the put area is 16 with 0 write positions available After overflow(): size of the put area is 32 with 15 write positions available Before overflow(): size of the put area is 32 with 0 write positions available After overflow(): size of the put area is 64 with 31 write positions available Before overflow(): size of the put area is 64 with 0 write positions available After overflow(): size of the put area is 128 with 63 write positions available See also overflow writes characters to the associated output sequence from the put area [virtual] (virtual protected member function of std::basic_stream- buf<CharT,Traits>) overflow appends a character to the output sequence [virtual] (virtual protected member function of std::basic_stringbuf<CharT,Traits,Allocator>) overflow writes characters to the associated file from the put area [virtual] (virtual protected member function of std::basic_file- buf<CharT,Traits>) sputc writes one character to the put area and advances the next pointer (public member function of std::basic_stream- buf<CharT,Traits>) put inserts a character (public member function of std::basic_os- tream<CharT,Traits>) http://cppreference.com 2022.07.31 std::strstr...uf::overflow(3)
NAME | Synopsis | Parameters | Return value | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::strstreambuf::overflow&sektion=3&manpath=FreeBSD+Ports+15.0>
