2011-03-27 69 views
1

我的cout语句有一个非常奇怪的问题。我只用XCode 4试过这个。例如,如果我写,XCode 4只能显示cout语句和endl

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。即使陌生人,如果我改变代码,

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

我看到所有三个陈述。

为什么我不会在我改变立场时看到“这不是”cout陈述?

回答

6

std::cout是一个流,通常它是缓冲的性能。如果打印endl流被刷新(cout << endl相同cout << "\n" << flush

您可以通过cout << flush(或cout.flush())手动刷新流

所以应打印:。

cout << "this doesn't" << flush; 
+0

我只是写这个:) – 2011-03-27 23:02:48

+1

同上:) FWIW,这是正常的流行为,而不是Xcode特定 – 2011-03-27 23:05:19

+1

谢谢 - 我以前从未遇到过这个问题。请原谅这句尴尬的话,但我会记得现在冲洗! – 2011-03-27 23:32:29