Namespaces
Variants

std:: println

From cppreference.net
< cpp ‎ | io
헤더 파일에 정의됨 <print>
template < class ... Args >
void println ( std:: format_string < Args... > fmt, Args && ... args ) ;
(1) (C++23부터)
template < class ... Args >

void println ( std:: FILE * stream,

std:: format_string < Args... > fmt, Args && ... args ) ;
(2) (C++23부터)
void println ( ) ;
(3) (C++26부터)
void println ( std:: FILE * stream ) ;
(4) (C++26부터)

형식 문자열 fmt 에 따라 args 를 포맷하고 (각 출력이 개행으로 끝남을 의미하는) 추가된 ' \n ' 과 함께 결과를 스트림에 출력합니다.

1) 다음과 동일함 std :: println ( stdout , fmt, std:: forward < Args > ( args ) ... ) .
2) 다음 연산을 수행하는 것과 동일합니다:

std:: print ( stream, "{} \n " , std:: format ( fmt, std:: forward < Args > ( args ) ... ) ) ;

(C++26 이전)

std:: print ( stream, std:: runtime_format ( std:: string ( fmt. get ( ) ) + ' \n ' ) ,
std:: forward < Args > ( args ) ... )

(C++26 이후)
3) std :: println ( stdout ) 와 동등합니다.
4) std:: print ( stream, " \n " ) 와 동등합니다.

만약 std:: formatter < Ti, char > Args 내의 어떤 Ti 에 대해서도 BasicFormatter 요구사항을 충족하지 않으면(이는 std::make_format_args 에 의해 요구됨), 동작은 정의되지 않습니다.

목차

매개변수

stream - 출력할 출력 파일 스트림
fmt - 형식 문자열을 나타내는 객체. 형식 문자열은 다음으로 구성됩니다:
  • 일반 문자( { } 제외), 출력에 변경 없이 복사됩니다,
  • 이스케이프 시퀀스 { { } } , 출력에서 각각 { } 로 대체됩니다, 그리고
  • 치환 필드.

각 치환 필드는 다음 형식을 가집니다:

{ arg-id (선택 사항) } (1)
{ arg-id (선택 사항) : format-spec } (2)
1) 형식 명세 없음 치환 필드
2) 형식 명세 포함 치환 필드
arg-id - 서식 지정에 사용할 args 내 인자의 인덱스를 지정합니다; 생략하면 인자가 순서대로 사용됩니다.

형식 문자열 내 arg-id 는 모두 존재하거나 모두 생략되어야 합니다. 수동 및 자동 인덱싱을 혼합하는 것은 오류입니다.

format-spec - 해당 인자에 대한 std::formatter 특수화에 의해 정의된 형식 명세. } 로 시작할 수 없습니다.

(C++23 이후)
(C++26 이후)
  • 다른 서식 가능 타입의 경우, 형식 명세는 사용자 정의 formatter 특수화에 의해 결정됩니다.
args... - 서식 지정할 인자들

예외

참고 사항

오버로드 ( 3,4 ) 는 C++26에서 추가되었지만, 모든 주요 구현체에서는 C++23 모드에서도 사용할 수 있도록 제공합니다.

기능 테스트 매크로 표준 기능
__cpp_lib_print 202207L (C++23) 형식화된 출력
202403L (C++26) 버퍼링되지 않은 형식화된 출력 [1]
__cpp_lib_format 202207L (C++23) std::basic_format_string 노출
  1. P3107R5가 DR로 채택되었지만, std::runtime_format 은 C++26부터만 사용 가능합니다. 결과적으로 이 해결책은 C++23에 적용할 수 없습니다.

예제

#include <print>
int main()
{
    // 각 std::println 호출은 새 줄로 끝남
    std::println("Please"); // 오버로드 (1)
    std::println("enter"); // (1)
    std::print("pass");
    std::print("word");
    std::println(); // (3); C++26부터 유효; std::print("\n");과 동일한 효과
}

출력:

Please
enter
password

참고 항목

(C++23)
인수의 형식화된 표현을 사용하여 stdout 또는 파일 스트림에 출력
(함수 템플릿)
인수의 형식화된 표현을 출력하고 ' \n ' 을 추가
(함수 템플릿)
(C++20)
인수의 형식화된 표현을 새 문자열에 저장
(함수 템플릿)
형식화된 출력을 stdout , 파일 스트림 또는 버퍼에 출력
(함수)