std:: endl
|
헤더 파일에 정의됨
<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 멤버 함수)
|