XCode 4 отображает только операторы cout с endl - PullRequest
1 голос
/ 28 марта 2011

У меня действительно странная проблема с моими заявлениями о cout. Я только попробовал это с XCode 4. Например, если я напишу,

cout << "this works" << endl;
cout << "this doesnt";
cout << memorySizeLimit << " blocks of memory available." << endl;

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

cout << memorySizeLimit << " blocks of memory available." << endl;
cout << "this works" << endl;
cout << "this doesn't";

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

cout << memorySizeLimit << " blocks of memory available." << endl;
cout << "this works" << endl;
cout << "this doesn't" << endl;

Я вижу все три утверждения.

Почему бы мне не увидеть это утверждение "this not", когда я поменяю его позицию?

1 Ответ

6 голосов
/ 28 марта 2011

std::cout - это поток, и обычно он буферизуется для производительности.Если вы печатаете endl, поток очищается (cout << endl совпадает с cout << "\n" << flush.

. Вы можете очистить поток вручную с помощью cout << flush (или cout.flush()).

Так что должно напечатать:

cout << "this doesn't" << flush;
...