std::ios_base::sync_with_stdio (3) - Linux Man Pages

std::ios_base::sync_with_stdio: std::ios_base::sync_with_stdio

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 following 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 unbuffered, and each I/O operation on a C++ stream is immediately applied to the corresponding 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 allowed 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 <iostream>
  #include <cstdio>


  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

See also


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