Namespaces
Variants

std:: endl

From cppreference.net
< cpp ‎ | io ‎ | manip
헤더 파일에 정의됨 <ostream>
template < class CharT, class Traits >
std:: basic_ostream < CharT, Traits > & endl ( std:: basic_ostream < CharT, Traits > & os ) ;

출력 시퀀스에 개행 문자를 삽입하고 os 를 플러시합니다. 마치 os. put ( os. widen ( ' \n ' ) ) 를 호출한 후 os. flush ( ) 를 호출하는 것과 같습니다.

이것은 출력 전용 I/O 조정자이며, out << std :: endl 와 같은 표현식으로 호출될 수 있습니다. 여기서 out std::basic_ostream 타입의 출력 스트림입니다.

목차

참고 사항

이 매니퓰레이터는 장시간 실행되는 프로세스의 출력을 표시하거나, 다중 스레드의 로깅 활동, 또는 예기치 않게 크래시될 수 있는 프로그램의 로깅 활동을 기록할 때와 같이 출력을 즉시 생성하기 위해 사용될 수 있습니다. 또한 생성된 프로세스가 화면 I/O를 수행하는 경우, std::cout 의 명시적 플러시는 std::system 호출 전에 반드시 필요합니다. 대부분의 다른 일반적인 상호작용 I/O 시나리오에서는 std::endl std::cout 와 함께 사용하는 것이 중복됩니다. 왜냐하면 std::cin 으로부터의 입력, std::cerr 로의 출력, 또는 프로그램 종료가 std:: cout . flush ( ) 호출을 강제하기 때문입니다. 일부 자료에서 권장하는 ' \n ' 대신 std::endl 를 사용하는 것은 출력 성능을 현저히 저하시킬 수 있습니다.

많은 구현에서 표준 출력은 라인 버퍼링되며, ' \n ' 를 작성하면 std :: ios :: sync_with_stdio ( false ) 가 실행되지 않은 경우 어쨌든 플러시가 발생합니다. 이러한 상황에서 불필요한 endl 은 표준 출력이 아닌 파일 출력의 성능만 저하시킵니다.

이 위키의 코드 샘플들은 Bjarne Stroustrup The C++ Core Guidelines 를 따라 표준 출력을 필요한 경우에만 플러시합니다.

불완전한 출력 라인을 플러시해야 할 때는 std::flush 매니퓰레이터를 사용할 수 있습니다.

출력의 모든 문자가 플러시되어야 할 때는 std::unitbuf 매니퓰레이터를 사용할 수 있습니다.

매개변수

os - 출력 스트림에 대한 참조

반환값

os (조작 후 스트림에 대한 참조).

예제

' \n ' endl 대신 사용하면 출력은 동일하지만 실시간으로 표시되지 않을 수 있습니다.

#include <chrono>
#include <iostream>
template<typename Diff>
void log_progress(Diff d)
{
    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d)
              << " passed" << std::endl;
}
int main()
{
    std::cout.sync_with_stdio(false); // on some platforms, stdout flushes on \n
    static volatile int sink{};
    const auto t1 = std::chrono::high_resolution_clock::now();
    for (int i = 0; i < 5; ++i)
    {
        for (int j = 0; j < 10000; ++j)
            for (int k = 0; k < 20000; ++k)
                sink += i * j * k; // do some work
        log_progress(std::chrono::high_resolution_clock::now() - t1);
    }
}

가능한 출력:

566ms passed
1133ms passed
1699ms passed
2262ms passed
2829ms passed

참고 항목

각 연산 후 출력 플러시 여부를 제어함
(함수)
출력 스트림을 플러시함
(함수 템플릿)
기본 저장 장치와 동기화함
( std::basic_ostream<CharT,Traits> 의 public 멤버 함수)