2015-01-27 6 views
-2

위키피디아에서 다음 example을 읽습니다.위키 백과 입력/출력 예제에서 오타

이 프로그램 것 출력에 "Hello, world!"를 :

#include <iostream> 

int main() 
{ 
    std::cout << "Hello, world!\n"; 
    return 0; 
} 

기사는 다음과 같은를 읽고 그 다음에 개행과 표준 출력 스트림 버퍼가 플러시됩니다.

나는 std::flush'\n'에 필요하지 않으므로 이것이 정확하지 않다고 생각합니다.

내가 가서 std::endl'\n'을 변경하는 문서를 편집해야 하는가?

+0

명백하게, "is X true"유형의 downvotes는 더 이상 'bad question'을 말하지 않고 'no'라고 말합니다. – sp2danny

+0

@ sp2danny 나는 그것을 알지 못했습니다 ... 설명 해 주셔서 고마워요. – malat

+0

@ sp2danny가 조금 비꼬는 것 같아요. Downvotes *는 대답이 "아니오"라는 것을 나타내는 데 사용해서는 안됩니다. (그러나 우리는 downvote에 대한 이유는 모르겠다.) –

답변

4

아니요, 프로그램이 정상적으로 종료되면 표준 출력이 플러시됩니다. (간단한 "Hello, world"프로그램이 비정상적으로을 종료하는 경우, 당신이 그것에 대해 할 수있는 많은 아마이 아니다.) 당신은 그 지점을 명확히 할 수 있습니다하지만 (플러시가 아니라에, 프로그램의 끝에서 일어나는 것을 std::cout << ... 호출).

그리고 return 0; 불필요한 (그러나 무해한)입니다.

+1

'프로그램 종료 '라고 다시해야한다고 생각하는데, 플러시는 비정상적인 프로그램 종료가 발생하지 않을 때 (중단) 발생한다고 생각합니다. – malat

+0

@malat : 좋은 지적. –

2

기본적으로 cout 스트림은 C 라이브러리의 stdout 스트림 (예 : 동일한 버퍼를 공유 함)과 동기화됩니다. 그리고 C 표준은 대화 형 장치에 쓸 때 stdout이 라인 버퍼링되거나 버퍼링되지 않도록 지정합니다.

출력이 콘솔과 같은 대화 형 장치 인 경우 \n을 인쇄 할 때 기본적으로 cout이 플러시됩니다. std::cout.sync_with_stdio(false)으로 전화하면 더 이상 플러시되지 않을 수 있습니다. 다른 대답이 말한대로

또한이에, 출력은 프로그램 종료에 플러시됩니다.

+0

대부분의 C++ 라이브러리는 C의 stdout을 다시 사용하지만 * 필수는 아닙니다 * – malat

+1

@malat 표준에서 필요합니다. – interjay

+0

그게'std :: ios_base :: sync_with_stdio (false)'의 전체 목적이 아닌가? – malat