微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/c/116084.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐