默认情况下,标准输入设备与标准输出设备以以下形式绑定在一起: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()
简单地保证冲洗cout
before cin
执行输入。这对于用户在被询问答案之前查看问题很有用。
但是,如果您不-tie()
the cin
from cout
,不能保证缓冲区cout
被冲了。但也不能保证缓冲区不会被刷新。事实上,如果计算机有足够的资源,它会刷新cout
buffer 立即地,所以这发生在cin
请求输入。您的示例就是这种情况。
所以,一切都很顺利。除了之后cin.tie(0)
,不能保证会发生冲洗。然而,在 99% 的情况下,冲洗仍然会发生(但不再保证)。
理论上,如果平局,cin
and cout
可以共享相同的缓冲区。但是,我认为没有任何实现可以做到这一点。原因之一是两者可能不并列(un-tie()d)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)