문제

기 전에 당신이 선언하는 이 질문으로 중복의 , 을 고려하시기 바랍는 제출했는데 문제가기 온라인판사\n 과 워싱턴,그리고 다음 std::endl 을 얻었습니다.그래서,필요해요 아주 특별한 응답의 포인트 인식 플랫폼:가 \n 정말 플랫폼을 알고 있고,런타임이 정말로 쓸 올바른 라인 종료에 따르면 플랫폼으로 대한 답변을 다른 질문이죠?그렇다면,저희는 어떻게 이 일이 일어났을까요??

을 경우 응답이에서 지원할 수 있에서 인용문 표준에 대한 인식 플랫폼 문제를 수도 있겠다는 생각이 드네요 정말 감사합니다.내가 읽고 다른 모든 질문의 답변(도 폐쇄된 것),시 반복하지 말라"플러시 버퍼는"것입니다.

도움이 되었습니까?

해결책

C++11, §27.7.3.8 -

namespace std
{
    template <class charT, class traits>
        basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
}

영향:호출 os.을 넣어(os.확대(' ')),후 os.flush().

을 반환합니다.os.

그래서,표준에서 그것은 분명 endl 플러시는 출력 스트림이 버퍼는 동안, \n 하지 않습니다.일반적으로 이용하고 싶을 것이다 endl 인쇄를 위한 새로운 라인,하지만 당신은 또한 염두에 두어야 할 때마다 당신은 그렇게 출력 버퍼를 얻을 플러시되 너무입니다.

플랫폼에 대한 인식

표준에서 그것은 분명한 것 모두가 똑같은 일을 인쇄에서 새로운 라인은 동일한 방식으로 이루어집니다.경우에 따라서,하나의 플랫폼에 독립적이며,다음도 동일합니다.이후 나는 확실히 알 endl 플랫폼 독립적이,동일해야에 대한 경우 \n.

다른 팁

std::endl 이 조작자는 출력 '\n', 다음 플러시합니다.대부분의 캐주얼의 사용,그것은 당신이해야 사용할 수 있습니다.출력할 때 대량의 데이터를,그러나,그것은 결과에서 중요한 성능,어떤 경우에는,사용 '\n'.

편집:

과 관련하여 플랫폼의 인식은:모두 출력은 정확히 동일한 것입니다.으면 스트림에 문을 열었는 텍스트 모드 '\n' 이 원인 플랫폼에 종속적 표현 라인의 끝을 발생합니다.0x0A under Unix,0x0D,0x0A 윈도우에서 시작하는 새로운 기록에 따라 메인프레임,등등.으면 스트림 binary 모드에서,그것은 하나의 바이트(일반적으로 0x0A 지만,경우에 따라서 기본 문자 인코딩을 사용한)를 출력합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top