home | help
std::setbuf(3)		       C++ Standard Libary		  std::setbuf(3)

NAME
     std::setbuf - std::setbuf

Synopsis
	Defined in header <cstdio>
	void setbuf( std::FILE* stream, char* buffer );

	Sets  the  internal  buffer to use for I/O operations performed on the C
     stream stream.

	If buffer  is  not  null,  equivalent  to  std::setvbuf(stream,  buffer,
     _IOFBF, BUFSIZ).

	If  buffer  is null, equivalent to std::setvbuf(stream, nullptr, _IONBF,
     0), which
	turns off buffering.

Parameters
	stream - the file stream to set the buffer to
		 pointer to a buffer for the stream to use. If a null pointer is
     supplied,
	buffer - the buffering is turned off. If not null, must be able to  hold
     at least
		 BUFSIZ characters

Return value
	(none)

Notes
	If  BUFSIZ  is not the appropriate buffer size, std::setvbuf can be used
     to change it.

	std::setvbuf should also be used to  detect  errors,  since  std::setbuf
     does not
	indicate success or failure.

	This  function may only be used after stream has been associated with an
     open file,
	but before any other operation (other than a failed call to
	std::setbuf/std::setvbuf).

	A common error is setting the buffer of stdin  or  stdout  to  an  array
     whose lifetime
	ends before the program terminates:

      int main()
      {
	  char buf[BUFSIZ];
	  std::setbuf(stdin, buf);
      } // lifetime of buf ends, undefined behavior

Example
	std::setbuf may be used to disable buffering on streams that require im-
     mediate
	output.

     // Run this code

      #include <chrono>
      #include <cstdio>
      #include <thread>

      int main()
      {
	  using namespace std::chrono_literals;

	  std::setbuf(stdout, nullptr); // unbuffered stdout
	  std::putchar('a'); // appears immediately on unbuffered stream
	  std::this_thread::sleep_for(1s);
	  std::putchar('b');
      }

Output:
      ab

See also
	setvbuf sets the buffer and its size for a file stream
		(function)
	C documentation for
	setbuf

http://cppreference.com 	   2024.06.10			  std::setbuf(3)

home | help