루프에 넣은 문자열이 인쇄되지 않습니다. 이 프로그램은 SYS/types.h 헤더 파일, G ++의 도움으로 작성되었습니다는왜 내 출력이 즉시 나타나지 않습니까?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
루프에 넣은 문자열이 인쇄되지 않습니다. 이 프로그램은 SYS/types.h 헤더 파일, G ++의 도움으로 작성되었습니다는왜 내 출력이 즉시 나타나지 않습니까?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
뭘 가능성이 여기서보고있는 것은 버퍼링되는 출력의 효과가 포함되어 있습니다. 일반적으로 출력은 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);
}
아마도 endl이 줄 끝을 추가하고 flush를 호출하는 것이 정확해야합니다. '\ n'만으로도 대부분 충분할 것입니다. – Klaim
* 일반적으로 출력은 실제로 새 행이 인쇄 될 때까지 ** 쓰여지지 않습니다 **. * .. 올바르지 않습니다. 개행은 그 보증을하지 않습니다. 'std :: endl'은 버퍼에 ** 개행을 추가하고 ** 플러시합니다. – Nawaz
std :: endl이 작동하는 이유는 라인 내용의 끝 (Windows의 경우 * nix, \ r \ n의 경우 \ n)과 std :: flush를 추가하기 때문입니다. 핵심 부분은 std :: flush이지만 std :: endl은 확실히 작동합니다. –
당신은 당신의 출력을 세척하지 않을을 얻기 위해 직접 std::flush
사용할 수 있습니다.
std::cout << "||" << std::flush;
try'cout << "||" << endl;' –
오류를 게시 할 수 있습니까? –