std:: vprint_unicode, std:: vprint_unicode_buffered
|
헤더에 정의됨
<print>
|
||
|
void
vprint_unicode
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(1) | (C++23부터) |
|
void
vprint_unicode_buffered
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(2) | (C++23부터) |
|
void
vprint_unicode_buffered
(
std::
string_view
fmt,
std::
format_args
args
)
;
|
(3) | (C++23부터) |
형식 문자열 fmt 에 따라 args 를 포맷하고, 결과를 출력 스트림에 기록합니다.
- stream 을 잠급니다.
- fmt 에 지정된 규격에 따라 args 로 제공된 형식화 인수의 문자 표현을 out 으로 정의합니다.
- out 을 stream 에 기록합니다:
-
- stream 이 네이티브 유니코드 API 를 통해서만 유니코드를 표시할 수 있는 터미널을 참조하는 경우, stream 을 플러시하고 네이티브 유니코드 API를 사용하여 out 을 터미널에 기록합니다.
- 그렇지 않은 경우, 수정되지 않은 out 을 stream 에 기록합니다.
- stream 가 유효한 출력 C 스트림 포인터가 아닌 경우.
- out 에 네이티브 유니코드 API를 사용할 때 유효하지 않은 유니코드 코드 유닛 이 포함된 경우.
std :: vprint_unicode ( stream, "{}" , std:: make_format_args ( out ) ) ; .
|
출력 스트림에 문자를 기록한 후, 관찰 가능한 체크포인트 를 설정합니다. |
(since C++26) |
목차 |
매개변수
| stream | - | 출력할 출력 파일 스트림 | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
각 치환 필드는 다음 형식을 가집니다:
1)
형식 명세가 없는 치환 필드
2)
형식 명세가 있는 치환 필드
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | 서식 지정할 인수들 | ||||||||||||||||||||||||||||||||||||||||||||||
예외
- std::bad_alloc 할당 실패 시.
- std::system_error , 스트림에 쓰기 작업이 실패할 경우.
- 사용된 formatters 에서 발생한 모든 예외를 전파합니다, 예를 들어 std::format_error .
참고 사항
C++ 표준은 구현자들이 out 에 유효하지 않은 유니코드 코드 단위가 포함된 경우 진단 메시지를 생성하도록 권장합니다.
POSIX에서 터미널에 쓰기는 일반적인 표준 I/O 함수를 사용하여 수행되므로, 터미널을 다른 파일 스트림과 다르게 취급할 필요가 없습니다.
Windows에서 스트림이 터미널을 참조하는 경우는
GetConsoleMode
(
_get_osfhandle
(
_fileno
(
stream
)
)
)
가 0이 아닌 값을 반환할 때입니다(관련 Windows 문서:
GetConsoleMode
,
_get_osfhandle
, 및
_fileno
참조). Windows의 기본 유니코드 API는
WriteConsoleW
입니다.
네이티브 유니코드 API 호출에 트랜스코딩이 필요한 경우, 유효하지 않은 코드 유닛은
U+FFFD
REPLACEMENT CHARACTER로 대체됩니다("The Unicode Standard - Core Specification",
Chapter 3.9
참조).
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | 형식화된 출력 |
202403L
|
(C++26)
(DR23) |
버퍼링되지 않은 형식화된 출력 | |
202406L
|
(C++26)
(DR23) |
더 많은 형식화 가능 타입에 대한 버퍼링되지 않은 형식화된 출력 활성화 | |
__cpp_lib_format
|
202207L
|
(C++23) | std::basic_format_string 노출 |
예제
|
이 섹션은 불완전합니다
이유: 예시가 없음 |
결함 보고서
다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 4044 | C++23 |
터미널이 유니코드를 표시할 수 있는 경우
항상 네이티브 유니코드 API가 사용됨 |
터미널이 유니코드를 표시하기 위해 네이티브 유니코드 API만
사용할 수 있는 경우에만 사용됨 |
| P3107R5 | C++23 | 출력 작업이 항상 버퍼링됨 | 버퍼링되지 않은 출력 작업 제공 |
| P3235R3 | C++23 |
P3107R5
에 의해 추가된
함수 이름이 오해의 소지가 있음 |
함수 이름 변경 |
참고 항목
|
stdout
또는 파일 스트림에
type-erased
인수 표현을 사용하여 출력
(함수) |
|
|
(C++23)
|
type-erased
인수 표현을 사용하여 유니코드 인식 출력 수행
(함수) |
|
(C++23)
|
stdout
또는 파일 스트림에 인수의
formatted
표현을 사용하여 출력
(함수 템플릿) |
|
(C++20)
|
인수의 형식화된 표현을 새 문자열에 저장
(함수 템플릿) |
외부 링크
| 1. | 유니코드 |
| 2. | 유니코드 표준 버전 14.0 - 핵심 사양 |