Почему использование cin перед sync_with_stdio (false) дает случайные значения следующей переменной i / p - PullRequest
0 голосов
/ 02 февраля 2019

Это простой код:

#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 голосов
/ 02 февраля 2019

это поведение определяется реализацией.

Если эта функция (здесь это относится к sync_with_stdio) вызывается после того, как в стандартном потоке произошел ввод / вывод, поведение определяется реализацией: реализациидиапазон от отсутствия эффекта до уничтожения буфера чтения.

...