C++ streambuf - sgetn



Description

It is used to get sequence of characters and calls the protected virtual member xsgetn with the same arguments s and n.

Declaration

Following is the declaration for std::basic_streambuf::sgetn.

streamsize sgetn (char_type* s, streamsize n);

Parameters

  • sPointer to an array where the character sequence is copied.

  • nMaximum number of characters to be retrieved.

Return Value

It returns the number of characters copied.

Exceptions

Basic guarantee − if an exception is thrown, the stream buffer is in a valid state.

Data races

It modifies up to all of the first n characters in the array pointed by s.

Example

In below example explains about std::basic_streambuf::sgetn.

#include <iostream>     
#include <fstream>      

int main () {
   char* contents;
   std::ifstream istr ("sample.txt");

   if (istr) {
      std::streambuf * pbuf = istr.rdbuf();
      std::streamsize size = pbuf->pubseekoff(0,istr.end);
      pbuf->pubseekoff(0,istr.beg);       
      contents = new char [size];
      pbuf->sgetn (contents,size);
      istr.close();
      std::cout.write (contents,size);
   }
   return 0;
}
streambuf.htm
Advertisements