这是一个简单的代码:
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
int t,n;cin>>t;
cin.tie(NULL);
while(t--){
cin>>n;
cout<<n<<endl;
}
}
如果我输入为
2
1
2
我得到预期的输出1
2
(在新行中)。
现在,如果我在cin>>t
之前使用ios::sync_with_stdio(false);
。然后对于相同的i / p,o / p为0
0
(在新行中)。
AFAIK:ios::sync_with_stdio(false);
停止与c++
和c
i/p
o/p
的同步,但是在两种情况下我都使用cin
,为什么它不起作用?
答案 0 :(得分:1)
此行为是实现定义的。
如果在标准流上发生I / O之后调用此函数(此处引用sync_with_stdio),则行为是实现定义的:实现范围从无效到破坏读取缓冲区。