FreeBSD Manual Pages
std::strstr...::underflow(3) C++ Standard Libary std::strstr...::underflow(3) NAME std::strstreambuf::underflow - std::strstreambuf::underflow Synopsis protected: virtual int_type underflow(); Reads the next character from the get area of the buffer. If the input sequence has a read position available (gptr() < eg- ptr(), returns (unsigned char)(*gptr()). Otherwise, if pptr() is not null and pptr() > egptr() (there is a put area and it is located after the get area), extends the end of the get area to in- clude the characters that were recently written into the put area by incre- menting egptr() to some value between gptr() and pptr(), and then returns (unsigned char)(*gptr()). Otherwise, returns EOF to indicate failure. Parameters (none) Return value The next character in the get area, (unsigned char)(*gptr()) on suc- cess, 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 get area is " << egptr()-eback() << " size of the put area is " << epptr()-pbase() << '\n'; int_type rc = std::strstreambuf::overflow(c); std::cout << "After overflow(): size of the get area is " << egptr()-eback() << " size of the put area is " << epptr()-pbase() << '\n'; return rc; } int_type underflow() { std::cout << "Before underflow(): size of the get area is " << egptr()-eback() << " size of the put area is " << epptr()-pbase() << '\n'; int_type ch = std::strstreambuf::underflow(); std::cout << "After underflow(): size of the get area is " << egptr()-eback() << " size of the put area is " << epptr()-pbase() << '\n'; if (ch == EOF) { std::cout << "underflow() returns EOF\n"; } else { std::cout << "underflow() returns '" << char(ch) << "'\n"; } return ch; } }; int main() { mybuf sbuf; // read-write dynamic strstreambuf std::iostream stream(&sbuf); int n; stream >> n; stream.clear(); stream << "123"; stream >> n; std::cout << n << '\n'; } Possible output: Before underflow(): size of the get area is 0 size of the put area is 0 After underflow(): size of the get area is 0 size of the put area is 0 underflow() returns EOF Before overflow(): size of the get area is 0 size of the put area is 0 After overflow(): size of the get area is 0 size of the put area is 32 Before underflow(): size of the get area is 0 size of the put area is 32 After underflow(): size of the get area is 3 size of the put area is 32 underflow() returns '1' Before underflow(): size of the get area is 3 size of the put area is 32 After underflow(): size of the get area is 3 size of the put area is 32 underflow() returns EOF 123 See also underflow reads characters from the associated input sequence to the get area [virtual] (virtual protected member function of std::basic_stream- buf<CharT,Traits>) underflow returns the next character available in the input sequence [virtual] (virtual protected member function of std::basic_stringbuf<CharT,Traits,Allocator>) underflow reads from the associated file [virtual] (virtual protected member function of std::basic_file- buf<CharT,Traits>) sgetc reads one character from the input sequence without ad- vancing the sequence (public member function of std::basic_stream- buf<CharT,Traits>) get extracts characters (public member function of std::ba- sic_istream<CharT,Traits>) http://cppreference.com 2022.07.31 std::strstr...::underflow(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::underflow&sektion=3&manpath=FreeBSD+Ports+15.0>
