[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/io/ios_base/sync_with_stdio [Back]  [Original]

std::ios_base::sync_with_stdio cppreference.com
cppreference.com

std::ios_base::sync_with_stdio

cppreference.com

<metanoindex/>

<tbody> </tbody>
static bool sync_with_stdio( bool sync = true );

Sets whether the standard std::cin, std::cout, std::cerr, std::clog, std::wcin, std::wcout, std::wcerr and std::wclog C++ streams are synchronized to the standard stdin, stdout, stderr and stdlog C streams after each input/output operation.

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(c)
3) std::ungetc(c, f) and str.rdbuf()->sputbackc(c) 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.

sync the new synchronization setting

synchronization state before the call to the function

#include <iostream>
#include <cstdio>
int main()
{
    std::cout.sync_with_stdio(false);
    std::cout << "a\n";
    std::printf("b\n");
    std::cout << "c\n";
}

:

b
a
c

.

C stdout
( ) []
C stderr,
( ) []
C stderr
( ) []

Web Proxy Viewer  |  New URL  |  Original Page