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:
In practice, this means that the C++ and the C streams use the same buffer, and therefore, can be mixed freely. 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.
It is implementation-defined if this function has any effect if called after some I/O occurred on the standard stream.
Parameters
sync | - | the new synchronization setting |
Return value
synchronization state before the call to the function.
Example
#include <iostream> #include <cstdio> int main() { std::cout.sync_with_stdio(false); std::cout << "a\n"; std::printf("b\n"); std::cout << "c\n"; }
Output:
b a c
See also
writes to the standard C output stream stdout (global object) | |
writes to the standard C error stream stderr , unbuffered(global object) | |
writes to the standard C error stream stderr (global object) |
Please login to continue.