Namespaces
Variants

std:: vprint_unicode (std::ostream)

From cppreference.net
헤더 파일에 정의됨 <ostream>
void vprint_unicode ( std:: ostream & os,
std:: string_view fmt, std:: format_args args ) ;
(C++23부터)

형식 문자열 fmt 에 따라 args 를 형식화하고, 결과를 출력 스트림 os 에 기록합니다. FormattedOutputFunction 으로 동작하지만, 오류 보고의 일부 세부 사항이 다릅니다 .

다음 작업을 순서대로 수행합니다:

  1. 먼저, 함수는 sentry 객체를 구성하고 검사합니다.
  2. 자동 변수를 다음과 같이 초기화합니다: std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; .
  3. out os 에 기록합니다:
  • 만약 os 네이티브 유니코드 API 를 통해서만 유니코드를 표시할 수 있는 터미널을 참조하는 경우, os 를 플러시하고 네이티브 유니코드 API를 사용하여 out 을 터미널에 기록합니다.
  • 그렇지 않은 경우, 문자 시퀀스 [ out. begin ( ) , out. end ( ) ) os 에 삽입합니다.

터미널에 쓰거나 os 에 삽입하는 데 실패할 경우, os. setstate ( std:: ios_base :: badbit ) 를 호출합니다.

os 에 문자를 기록한 후, 관찰 가능한 체크포인트 를 설정합니다.

(since C++26)

만약 out 에 유효하지 않은 유니코드 코드 유닛 이 포함되어 있고 네이티브 유니코드 API가 사용되는 경우, 동작은 정의되지 않습니다.

목차

매개변수

os - 데이터를 삽입할 출력 스트림
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 - 서식 지정될 인자들

예외

참고 사항

네이티브 유니코드 API 호출에 트랜스코딩이 필요한 경우, 유효하지 않은 코드 유닛은 U+FFFD REPLACEMENT CHARACTER로 대체됩니다("The Unicode Standard - Core Specification", Chapter 3.9 참조).

기능 테스트 매크로 표준 기능
__cpp_lib_print 202207L (C++23) 형식화된 출력
__cpp_lib_format 202207L (C++23) 노출 std::basic_format_string

예제

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 4044 C++23 터미널이 유니코드를 표시할 수 있는 경우
항상 네이티브 유니코드 API가 사용됨
터미널이 유니코드를 표시하기 위해 네이티브 유니코드 API만
사용할 수 있는 경우에만 사용됨

참고 항목

타입 삭제된 인수 표현을 사용하여 문자 데이터를 출력합니다
(함수)
인수의 형식화된 표현을 출력합니다
(함수 템플릿)
문자 데이터를 삽입하거나 rvalue 스트림에 삽입합니다
(함수 템플릿)
유니코드 지원 stdout 또는 파일 스트림에 타입 삭제된 인수 표현을 사용하여 출력합니다
(함수)
(C++20)
인수의 형식화된 표현을 새 문자열에 저장합니다
(함수 템플릿)

외부 링크

1. 유니코드 — 위키백과
2. 유니코드 표준 버전 14.0 — 핵심 사양