2015-09-25 3 views
0

вот код, который я имеюC++ станд :: CIN застрял на 80 линий ввода

int main() 
{ 
    int total = 0; 
    int count = 0; 
    std::cin >> total; 


    int arr[4] = {0,0,0,0}; 

    while(count < total) 
    { 

    std::cin>>arr[0]>>arr[1]>>arr[2]>>arr[3]; 

    count++; 
    std::cout<<count<<std::endl; 

    } 

return 0; 

} 

поэтому первая строка ввода сообщает, сколько строк мне нужно прочитать after..and каждая строка 4 числа, разделенные пробелом. Всякий раз, когда количество строк превышает 80 (например, 100), тогда цикл while застревает. Я не знаю, что вызывает проблему, и я пробовал пару вещей, таких как cin.clear(), но они просто не работали ....

Редактировать: std :: cin перестает читать после 80 строк ввода с формат, как 10 20 210 10

Xcode с LLVM не работает ... Тем не менее г ++, используя терминал работает .... http://melpon.org/wandbox/permlink/UXAMgM4ldn2K2NgU вот код, который работает на моем терминале с г ++, но не мой Xcode ...

+2

Ваше описание проблемы очень расплывчато. Что значит «застревает»? Как вы точно тестируете? –

+0

И как выглядит линия 80 ввода? Он содержит что-то, что не является целым числом? –

+0

@JoachimPileborg они все целые числа, такие как 10 20 30 40 – GalaxyVintage

ответ

1

Это результат, который застревает. Если вывод count не считывается и не потребляется, в конечном итоге выходной буфер будет заполнен, а строка cout будет блокирована.

+0

как сбросить выходной буфер? – GalaxyVintage

+0

Почему вы хотите сбросить его точно? –

+0

Извините ... вы сказали, что буфер заполнен, поэтому я подумал, что, возможно, его сброс позволит продолжить ... я что-то неправильно понял? – GalaxyVintage

Смежные вопросы