cin.tie(NULL);ios_base::sync_with_stdio(false);的解释

本文主要参考自一个英文网站,和自己的实践经验。->原文参考

有如下代码,头文件在 #include <bits/stdc++.h>

ios_base::sync_with_stdio(false);
cin.tie(NULL);

先解释这个,这个意思是和C语言的标准输出输入进行绑定。C语言的程序一般来说在程序第一次输入设备时,对应IO就已经准备就绪了,但是C++似乎并非如此(对于这点确是没找到对应资料,有清楚的请告知)

ios_base::sync_with_stdio(false);
通在这个sync_with_stdio量默认是真,也就是默认和C语言的那两个输入输出函数是绑定的。

解除绑定的效果:C++的的IO就不与C语言绑定,最明显的就是你输出换行符不会再默认直接刷新出cout的内容。

	ios::sync_with_stdio(false);
    cout<<10<<"\n";
    //cout.flush();//把这段代码加上才能出来

也就是说,和C语言的printf绑定就cout结束后自动调用一次flush。

cin.tie(NULL);

解释下这段代码,这是接触cin与cout的绑定,C++的IO类里面,会有在cin的时候,自动刷新一次cout,如果你不想要这个效果,用这个在IO输入之前,就可以实现。但是需要注意的是,要先与C语言的解绑才能看到现象,不然cout直接就打印出来。

	ios::sync_with_stdio(false);
     cin.tie(nullptr);
	cout<<10;
    string s;
    cin>>s;

逐步运行这段代码,你会发现cin都输入完了,依然不会打印出10;
使用下面个语句才行。

cout.flush();
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值