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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章