I have a really weird issue with my cout statements. I've only tried this out with XCode 4. For instance, if I write,
cout << "this works" << endl;
cout << "this doesnt";
cout << memorySizeLimit << " blocks of memory available." << endl;
I see all three output statements in my debugger console. However, if I change the order to,
cout << memorySizeLimit << " blocks of memory available." << endl;
cout << "this works" << endl;
cout << "this doesn't";
I only see the first two couts. Even stranger, if I change the code to,
cout << memorySizeLimit << " blocks of memory available." << endl;
cout << "this works" << endl;
cout << "this doesn't" << endl;
I see all three statements.
Why would I not see that "this doesn't" cout statement when I change its position?
std::cout
is an stream and normally it is buffered for performance. If you print endl
the stream gets flushed ( cout << endl
is the same as cout << "\\n" << flush
.
You may flush the stream manually by cout << flush
(or cout.flush()
).
So that should print:
cout << "this doesn't" << flush;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.