std::ios_base::sync_with_stdio
来自cppreference.com
static bool sync_with_stdio( bool sync = true ); |
||
设定 std::cin, std::cout, std::cerr, std::clog, std::wcin, std::wcout, std::wcerr 和 std::wclog, 这些 C++ 标准流与 stdin, stdout, stderr 和 stdlog 这些 C 标准流在每次输入输出后操作进行同步。
For a standard stream str
, synchronized with the C stream f
, the following pairs of functions have identical effect:
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)
关闭这一同步选项, 将允许 C++ 标准流对其 I/O 操作使用独立的缓冲, 这在有些情况下会加快程序的运行效率。
前面所说的8种 C++ 标准流, 在初始情况下都设定为与 C 标准流同步。
已经进行了读写操作以后, 再设定这个选项, 这种情况会产生什么效果没有在 C++ 标准中规定, 取决于具体实现。
目录 |
[编辑] 参数
sync | - | 设定是否进行同步 |
[编辑] 返回值
返回先前(是否同步)的设定
[编辑] 例子
#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
(全局对象)的 原文: writes to the standard C output stream stdout (全局对象) | |
写入标准的C错误流stderr,unbuffered
(全局对象) 原文: writes to the standard C error stream stderr, unbuffered (全局对象) | |
写入标准的C错误流stderr
(全局对象) 原文: writes to the standard C error stream stderr (全局对象) |