namespace std {
void vprint_nonunicode(string_view fmt,
format_args args); // (1) C++23
void vprint_nonunicode(FILE* stream,
string_view fmt,
format_args args); // (2) C++23
}
概要
書式指定で非Unicode出力する。
- (1) : 標準出力に、書式指定で非Unicode出力する
- (2) : 指定された
FILE
に、書式指定で非Unicode出力する
std::ostream
から派生したクラスオブジェクトに対して出力したい場合は、<ostream>
ヘッダのstd::vprint_nonunicode()
関数を使用すること。
事前条件
- (2) :
stream
が有効な出力Cストリームを指していること
効果
-
(1) : 以下と等価:
vprint_unicode(stdout, fmt, args);
-
(2) :
- C++23 :
vformat(fmt, args)
の結果をstream
に書き出す - C++26 : ストリームのロックを保持したまま、
fmt
で書式指定に従って書式化されたargs
の文字表現をstream
に書き出す
- C++23 :
例外
vformat()
関数がなんらかの例外を送出する可能性がある- 端末かストリームへの書き込みに失敗した場合、
system_error
を送出する bad_alloc
を送出する可能性がある
バージョン
言語
- C++23
処理系
- Clang: 19 ✅
- GCC: 14 ✅
- ICC: ??
- Visual C++: 2022 Update 7 ✅
関連項目
参照
- P2093R14 Formatted output
- P3107R5 Permit an efficient implementation of
std::print
- P3235R3
std::print
more types faster with less memory- C++26の上記2つの提案文書では、余分な動的メモリ確保をしないよう仕様が見直された