Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_...f::underflow(3) C++ Standard Libarystd::basic_...f::underflow(3)

NAME
       std::basic_filebuf::underflow - std::basic_filebuf::underflow

Synopsis
	  protected:
	  virtual int_type underflow()

	  Reads	more data into the input area.

	  Behaves  like	the base class std::basic_streambuf::underflow,	except
       that to read the
	  data from the	associated character sequence (the file) into the  get
       area, first
	  reads	 the bytes from	the file into a	temporary buffer (allocated as
       large as
	  necessary), then uses	std::codecvt::in of the	imbued locale to  con-
       vert the	external
	  (typically,  multibyte) representation to the	internal form which is
       then used to
	  populate the get area. The conversion	may be skipped if the locale's
	  std::codecvt::always_noconv returns true

Parameters
	  (none)

Return value
	  Traits::to_int_type(*gptr()) (the first character of the pending se-
       quence) in case
	  of success, or Traits::eof() in case of failure.

Example
       // Run this code

	#include <fstream>
	#include <iostream>

	struct mybuf : std::filebuf
	{
	    int	underflow() {
		 std::cout << "Before underflow(): size	of the get area	is "
			   << egptr()-eback() << " with	"
			   << egptr()-gptr() <<	" read positions available\n";
		 int rc	= std::filebuf::underflow();
		 std::cout << "underflow() returns " <<	rc  <<	".\nAfter  the
       call, "
			   << "size of the get area is "
			   << egptr()-eback() << " with	"
			   << egptr()-gptr() <<	" read positions available\n";
		return rc;
	    }
	};

	int main()
	{
	    mybuf buf;
	    buf.open("test.txt", std::ios_base::in);
	    std::istream stream(&buf);
	    while(stream.get())	;
	}

Possible output:
	Before	underflow():  size  of the get area is 0 with 0	read positions
       available
	underflow() returns 73.
	After the call,	size of	the get	area is	110 with  110  read  positions
       available
	Before	underflow(): size of the get area is 110 with 0	read positions
       available
	underflow() returns -1.
	After the call,	size of	the get	area is	0 with 0 read positions	avail-
       able

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 a character from the	input sequence without advanc-
       ing the next
	  [virtual] pointer
		    (virtual protected member function of std::strstreambuf)
	  uflow	    reads from the  associated	file  and  advances  the  next
       pointer in the get
	  [virtual] area
		    (virtual protected member function)
	  overflow  writes characters to the associated	file from the put area
	  [virtual] (virtual protected member function)
	  sgetc	     reads  one	 character from	the input sequence without ad-
       vancing the sequence
		    (public    member	 function    of	    std::basic_stream-
       buf<CharT,Traits>)

http://cppreference.com		  2022.07.31	 std::basic_...f::underflow(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::basic_filebuf::underflow&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help