c – 为什么我们需要绑定std :: cin和std :: cout?

认情况下,标准输入设备与标准输出设备绑定在一起,格式如下:
std :: cin.tie(& std :: cout);这保证输入缓冲区在调用输入之前被刷新.所以我试图通过使用std :: cin.tie(0)来解开它们,但似乎结果与绑定没有任何区别.
#include<iostream>
using namespace std;

int main(int argc,char *argv[])
{
    char c;

    cin.tie(0)

    cout << "Please enter c:";
    cin >> c;
    cout << c ;

    return 0;
}

我测试错了吗?为什么我们需要把它们捆在一起?他们共享相同的缓冲区吗?

解决方法

您的示例中没有错误(除了您应该在cin.tie(0)行之后添加分号),也不用iostream对象的工作方式.

tie()只是在cin执行输入之前保证cout的刷新.这对于用户在被问到答案之前看到这个问题是有用的.

但是,如果你从cout中取消()cin,那么不能保证cout的缓冲区被刷新.但是不能保证缓冲区没有被冲洗掉.事实上,如果计算机有足够的资源,它将立即刷新cout缓冲区,所以这是在cin请求输入之前发生的.在你的例子中就是这样.

所以,一切都很好.除了cin.tie(0)之外,不能保证会发生冲水.然而,在99%的情况下,冲洗仍然会发生(但不再保证).

在理论上,如果被绑定,cin和cout可以共享相同的缓冲区.但是,我认为没有这样做.一个原因是两个可能是不相关()d.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...