home | help
std::ios_ba..._with_stdio(3)   C++ Standard Libary  std::ios_ba..._with_stdio(3)

NAME
     std::ios_base::sync_with_stdio - std::ios_base::sync_with_stdio

Synopsis
	static bool sync_with_stdio( bool sync = true );

	Sets whether the standard C++ streams are synchronized to the standard C
     streams
	after each input/output operation.

	The  standard  C++  streams  are  the  following:  std::cin,  std::cout,
     std::cerr,
	std::clog, std::wcin, std::wcout, std::wcerr and std::wclog.

	The standard C streams are the following: stdin, stdout and stderr.

	For a standard stream str, synchronized with the C stream f, the follow-
     ing pairs of
	functions have identical effect:

	1) std::fputc(f, c) and str.rdbuf()->sputc(c).
	2) std::fgetc(f) and str.rdbuf()->sbumpc().
	3) std::ungetc(c, f) and str.rdbuf()->sputbackc(c).

	In practice, this means  that  the  synchronized  C++  streams	are  un-
     buffered, and each
	I/O  operation on a C++ stream is immediately applied to the correspond-
     ing C stream's
	buffer. This makes it possible to freely mix C++ and C I/O.

	In addition, synchronized C++ streams are guaranteed to  be  thread-safe
     (individual
	characters  output  from  multiple  threads  may interleave, but no data
     races occur).

	If the synchronization is turned off, the C++ standard streams	are  al-
     lowed to buffer
	their I/O independently, which may be considerably faster in some cases.

	By  default,  all eight standard C++ streams are synchronized with their
     respective C
	streams.

	If this function is called  after  I/O	has  occurred  on  the	standard
     stream, the
	behavior is implementation-defined: implementations range from no effect
     to
	destroying the read buffer.

Parameters
	sync - the new synchronization setting

Return value
	Synchronization state before the call to the function.

Example
     // Run this code

      #include <cstdio>
      #include <iostream>

      int main()
      {
	  std::ios::sync_with_stdio(false);
	  std::cout << "a\n";
	  std::printf("b\n");
	  std::cout << "c\n";
      }

Possible output:
      b
      a
      c

	Defect reports

	The  following	behavior-changing  defect  reports were applied retroac-
     tively to
	previously published C++ standards.

	  DR   Applied to		Behavior as published		    Cor-
     rect behavior
			  it was unspecified (1) which state is actually
	LWG 49 C++98	  returned and					    both
     specified
			  (2) what does 'synchronized' between standard C
			  and C++ streams mean

See also
	cout  writes to the standard C output stream stdout
	wcout (global object)
	cerr  writes to the standard C error stream stderr, unbuffered
	wcerr (global object)
	clog  writes to the standard C error stream stderr
	wclog (global object)

http://cppreference.com 	   2024.06.10	    std::ios_ba..._with_stdio(3)

home | help