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

FreeBSD Manual Pages

  
 
  

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
       immediate
	  output

       // Run this code

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

	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)

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

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

home | help