首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::ios_base::sync_with_stdio

static bool sync_with_stdio( bool sync = true );

?

?

设置标准C++流在每次输入/输出操作后是否与标准C流同步。

标准C++流如下:std::cin,,,std::cout,,,std::cerr,,,std::clog,,,std::wcin,,,std::wcout,,,std::wcerrstd::wclog...

标准C流如下:stdin,,,stdoutstderr...

标准流str,与C流同步f,下列功能对具有相同的效果:

1%29std::fputc(f, c)str.rdbuf()->sputc(c)

2%29std::fgetc(f)str.rdbuf()->sbumpc()

3%29std::ungetc(c, f)str.rdbuf()->sputbackc(c)

在实践中,这意味着同步C++流被取消缓冲,C++流上的每个I/O操作立即应用到相应的C流%27S缓冲区。这使得C++和C I/O可以自由混合。

此外,同步C++流可以保证线程安全%28,从多个线程输出的单个字符可能会交织,但不会发生%29的数据竞争。

如果关闭同步,则允许C++标准流独立地缓冲它们的I/O,在某些情况下这可能要快得多。

默认情况下,所有八种标准C++流都与各自的C流同步。

如果在标准流上发生I/O之后调用此函数,则该行为是实现定义的:实现范围从无效到破坏读取缓冲区。

参数

sync

-

the new synchronization setting

返回值

调用函数之前的同步状态。

二次

代码语言:javascript
复制
#include <iostream>
#include <cstdio>
 
int main()
{
    std::ios::sync_with_stdio(false);
    std::cout << "a\n";
    std::printf("b\n");
    std::cout << "c\n";
}

二次

可能的产出:

二次

代码语言:javascript
复制
b
a
c

二次

另见

coutwcout

writes to the standard C output stream stdout(global object)

cerrwcerr

writes to the standard C error stream stderr, unbuffered(global object)

clogwclog

writes to the standard C error stream stderr(global object)

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com