Вопрос по комбинации >>, << операторов & объектов cin и cout - PullRequest
0 голосов
/ 06 мая 2011
char word[10];
int n=5;
while(n--)
{
  cin>>word;
  cout<<n<<" "<<word<<" ";
}

Выход:

ABC DEF GHI JKL MNO
4 ABC 3 DEF 2 GHI 1 JKL 0 MNO

Теперь мой вопрос: что происходит, когда входной буфер встречает пробел ('')? Видно, что n уменьшается после каждого пробела, но слово cout << ничего не отображает на экране. </p>

Я запутался, так как считаю, что вывод должен отображаться сразу после ввода одного слова. Например.

 ABC 4 ABC DEF 3 DEF GHI 2 GHI JKL 1 JKL MNO 0 MNO

Ответы [ 3 ]

1 голос
/ 06 мая 2011

Не уверен, что я понимаю ваш вопрос, но если я правильно вас понял: оператор извлечения потока читает, пока не встретит пробел, а затем использует пробел.Вы не получите новое слово, состоящее только из пробельных символов.


Несколько минут спустя: я вернулся и перечитал снова, и теперь я думаю, что понимаю, что вы спрашиваете:два потока не синхронизированы, поэтому вход и выход не могут чередоваться так, как вы предлагаете.

0 голосов
/ 29 сентября 2011

Попробуйте сделать

cout << flush;

Или

cout << endl;

(внутри)

0 голосов
/ 06 мая 2011

cin считывает строки, разделенные пробелом, но пробел отбрасывается в процессе

...