2011-03-27 2 views
1

내 cout 문과 관련된 이상한 문제가 있습니다. 내가 쓰는 경우 난 단지 XCode 4 만 endl이있는 cout 문을 표시합니다.

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

내가 내 디버거 콘솔에있는 모든 3 개의 출력 문을 참조하십시오, 예를 들어 엑스 코드 4와 함께이를 시도했습니다. 그러나 주문을 변경하면

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; 

나는 세 문장 모두를 볼 수 있습니다.

위치를 바꿀 때 왜 "이럴 필요가 없습니다"라는 문구가 보이지 않습니까?

답변

6

std::cout은 스트림이며 일반적으로 성능을 위해 버퍼링됩니다. 당신이 endl을 인쇄하는 경우 스트림이 cout << endlcout << "\n" << flush과 동일 (플러시됩니다

당신은 cout << flush (또는 cout.flush())에 의해 수동으로 스트림을 플러시 할 수

은 그래서 인쇄해야합니다 :.. 내가

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

했다 :) 단지 –

+1

ditto :) FWIW, 이것은 정상적인 스트림 동작이며 Xcode에 한정되지 않습니다. –

+1

감사합니다. 어색한 구절을 용서해주세요,하지만 지금은 플러시하는 것을 잊지 않을 것입니다! –