GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::strstreambuf::overflow(3) C++ Standard Libary std::strstreambuf::overflow(3)

std::strstreambuf::overflow - std::strstreambuf::overflow


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 (*palloc)(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 function is called
with (*pfree)(p) to deallocate the previous array, if needed, otherwise delete[] p
is used. If allocation fails, the function fails and returns EOF.


c - the character to store in the put area


If c==EOF, returns some value other than EOF. Otherwise, returns (unsigned char)(c)
on success, EOF on failure.

// 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 allocation, at least "
<< " on some systems.";
}


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


overflow writes characters to the associated output sequence from the put area
[virtual] (virtual protected member function of std::basic_streambuf<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_filebuf<CharT,Traits>)
sputc writes one character to the put area and advances the next pointer
(public member function of std::basic_streambuf<CharT,Traits>)
put inserts a character
(public member function of std::basic_ostream<CharT,Traits>)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.