home | help
std::basic_...m::readsome(3)   C++ Standard Libary  std::basic_...m::readsome(3)

NAME
     std::basic_istream::readsome - std::basic_istream::readsome

Synopsis
	std::streamsize readsome( char_type* s, std::streamsize count );

	Extracts  up  to  count  immediately available characters from the input
     stream. The
	extracted characters are stored into the character array pointed  to  by
     s.

	Behaves as UnformattedInputFunction. After constructing and checking the
     sentry
	object,

	  * If rdbuf()->in_avail() == -1, calls setstate(eofbit) and extracts no
     characters.
	  * If rdbuf()->in_avail() == 0, extracts no characters.
	  *  If  rdbuf()->in_avail() > 0, extracts std::min(rdbuf()->in_avail(),
     count)
	    characters and stores them into successive locations of the  charac-
     ter array
	    whose first element is pointed to by s.

Parameters
	s     - pointer to the character array to store the characters to
	count - maximum number of characters to read

Return value
	The number of characters actually extracted.

Exceptions
	failure  if  an error occurred (the error state flag is not goodbit) and
     exceptions()
	is set to throw for that state.

	If an internal operation throws an exception, it is caught and badbit is
     set. If
	exceptions() is set for badbit, the exception is rethrown.

Notes
	The behavior of this function is highly implementation-specific. For ex-
     ample, when
	used with std::ifstream, some library implementations fill the	underly-
     ing filebuf
	with  data  as soon as the file is opened (and readsome() on such imple-
     mentations
	reads data, potentially, but not necessarily, the  entire  file),  while
     other
	implementations  only  read  from file when an actual input operation is
     requested (and
	readsome() issued after file opening  never  extracts  any  characters).
     Likewise, a
	call  to  std::cin.readsome() may return all pending unprocessed console
     input, or may
	always return zero and extract no characters.

Example
     // Run this code

      #include <iostream>
      #include <sstream>

      int main()
      {
	  char c[10] = {};
	  std::istringstream input("This is sample  text.");  //  std::stringbuf
     makes its entire
							    //	buffer available
     for
							    // unblocking read
	  input.readsome(c, 5); // reads 'This ' and stores in c[0] .. c[4]
	  input.readsome(c, 9); // reads 'is sample' and stores in c[0] .. c[8]
	  std::cout << c << '\n';
      }

Output:
      is sample

See also
	read	 extracts blocks of characters
		 (public member function)
	in_avail obtains the number of characters immediately available  in  the
     get area
		 (public member function of std::basic_streambuf<CharT,Traits>)

http://cppreference.com 	   2024.06.10	    std::basic_...m::readsome(3)

home | help