2012-05-11 4 views
9

루프에 넣은 문자열이 인쇄되지 않습니다. 이 프로그램은 SYS/types.h 헤더 파일, G ++의 도움으로 작성되었습니다는왜 내 출력이 즉시 나타나지 않습니까?

for(int i=0;i<9;i++) 
{ 
    cout<<"||"; 
    sleep(1); 
} 
+0

try'cout << "||" << endl;' –

+0

오류를 게시 할 수 있습니까? –

답변

7

뭘 가능성이 여기서보고있는 것은 버퍼링되는 출력의 효과가 포함되어 있습니다. 일반적으로 출력은 std::endl이 사용될 때까지 실제로 기록되지 않습니다. 후드 아래 std::endl

for(int i=0;i<9;i++) 
{ 
    // Flushes and adds a newline 
    cout<< "||" << endl; 
    sleep(1); 
} 

개행 문자를 추가하고 콘솔 출력을 강제 std::flush를 사용한다. 동일한 효과

for(int i=0;i<9;i++) 
{ 
    cout << "||" << flush; 
    sleep(1); 
} 
+3

아마도 endl이 줄 끝을 추가하고 flush를 호출하는 것이 정확해야합니다. '\ n'만으로도 대부분 충분할 것입니다. – Klaim

+1

* 일반적으로 출력은 실제로 새 행이 인쇄 될 때까지 ** 쓰여지지 않습니다 **. * .. 올바르지 않습니다. 개행은 그 보증을하지 않습니다. 'std :: endl'은 버퍼에 ** 개행을 추가하고 ** 플러시합니다. – Nawaz

+1

std :: endl이 작동하는 이유는 라인 내용의 끝 (Windows의 경우 * nix, \ r \ n의 경우 \ n)과 std :: flush를 추가하기 때문입니다. 핵심 부분은 std :: flush이지만 std :: endl은 확실히 작동합니다. –

13

당신은 당신의 출력을 세척하지 않을을 얻기 위해 직접 std::flush 사용할 수 있습니다.

std::cout << "||" << std::flush; 
관련 문제