我试图了解 iostreams 关于 tie() 的行为。根据我的发现,以下代码不应向屏幕输出任何内容。
cin.tie(NULL);
int i;
cout << "TEST";
cin >> i;
while (true);
相反,它应该表现得像
cin.tie(NULL);
int i;
cout << "TEST";
read(0, &i, sizeof(int));
while (true);
换句话说,当调用 cin 输入时, cout 缓冲区会被刷新,即使流是解开的。我试过用 g++ 4.8.0 和 4.6.3 编译这段代码。我也尝试过调用cin.tie()
,之后cin.tie(NULL)
正确返回 NULL,因此不应绑定流。
还有更多我想念的 tie() 吗?