为什么在sync_with_stdio(false)之前使用cin给下一个i / p变量提供随机值

时间:2019-02-02 12:20:28

标签: c++ synchronization stdio

这是一个简单的代码:

#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,为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

此行为是实现定义的。

  

如果在标准流上发生I / O之后调用此函数(此处引用sync_with_stdio),则行为是实现定义的:实现范围从无效到破坏读取缓冲区。