std:: wprintf, std:: fwprintf, std:: swprintf
|
ヘッダーで定義
<cwchar>
|
||
|
int
wprintf
(
const
wchar_t
*
format, ...
)
;
|
(1) | |
|
int
fwprintf
(
std::
FILE
*
stream,
const
wchar_t
*
format, ...
)
;
|
(2) | |
|
int
swprintf
(
wchar_t
*
buffer,
std::
size_t
size,
const
wchar_t
*
format, ...
)
;
|
(3) | |
指定された場所からデータを読み込み、ワイド文字列相当に変換し、様々なシンクに結果を書き込みます。
目次 |
パラメータ
| stream | - | 書き込み先の出力ファイルストリーム |
| buffer | - | 書き込み先のワイド文字列へのポインタ |
| size | - | 最大 size - 1 文字まで書き込み可能(ナル終端文字を含む) |
| format | - | データの解釈方法を指定するナル終端ワイド文字列へのポインタ |
| ... | - | 出力するデータを指定する引数。 デフォルト変換 後の引数が対応する変換指定子で期待される型と一致しない場合、または format で要求される数より引数が少ない場合、動作は未定義。 format で要求される数より引数が多い場合、余分な引数は評価されるが無視される |
書式文字列は、出力ストリームに変更されずにコピーされる通常のワイド文字(
%
を除く)と変換指定子で構成されます。各変換指定子は以下の形式を持ちます:
-
-
導入部
%文字。
-
導入部
-
- (オプション) 変換の動作を変更する1つ以上のフラグ:
-
-
-: 変換結果がフィールド内で左揃えされます(デフォルトでは右揃え)。 -
+: 符号付き変換の場合、変換結果に常に符号が付加されます(デフォルトでは負の場合のみマイナス記号が付加されます)。 -
space
: 符号付き変換の結果が符号文字で始まらない場合、または空の場合、結果の前にスペースが挿入されます。
+フラグが存在する場合は無視されます。 -
#: 変換の 代替形式 が実行されます。正確な効果については以下の表を参照してください。それ以外の場合の動作は未定義です。 -
0: 整数および浮動小数点数変換の場合、 space 文字の代わりに先行ゼロを使用してフィールドが埋められます。整数の場合、精度が明示的に指定されている場合は無視されます。このフラグを使用した他の変換の動作は未定義です。-フラグが存在する場合は無視されます。
-
-
-
(オプション)
整数値または
*で、最小フィールド幅を指定します。結果は、必要に応じて、右揃えの場合は左側に、左揃えの場合は右側に、 スペース 文字(デフォルト)でパディングされます。*が使用される場合、幅は int 型の追加の引数によって指定され、この引数は変換対象の引数と、精度を指定する引数(存在する場合)の前に現れます。引数の値が負の場合、-フラグが指定され、正のフィールド幅となります(注: これは最小幅です: 値が切り詰められることはありません)。
-
(オプション)
整数値または
-
-
(オプション)
.に続けて整数値または*を指定するか、あるいは何も指定せずに変換の 精度 を指定する。*が使用される場合、 精度 は int 型の追加引数によって指定され、この引数は変換対象の引数の前に、最小フィールド幅を指定する引数(存在する場合)の後に現れる。この引数の値が負の場合、無視される。数値も*も使用されない場合、精度はゼロと見なされる。 精度 の正確な効果については以下の表を参照のこと。
-
(オプション)
-
- (オプション) 長さ修飾子 引数のサイズを指定する(変換形式指定子と組み合わせて、対応する引数の型を指定します)。
-
- 変換フォーマット指定子。
以下のフォーマット指定子が利用可能です:
|
変換
指定子 |
説明 |
期待される
引数の型 |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 長さ修飾子→ | hh | h | none | l | ll | j | z | t | L | |
| C++11以降でのみ利用可能→ | はい | はい | はい | はい | はい | |||||
%
|
リテラル
%
を書き出す。完全な変換指定は
%%
でなければならない。
|
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
単一文字 を書き込みます。
|
N/A | N/A |
int
|
std::wint_t
|
N/A | N/A | N/A | N/A | N/A |
s
|
文字列 を書き込みます。
|
N/A | N/A |
char
*
|
wchar_t
*
|
N/A | N/A | N/A | N/A | N/A |
d
i
|
符号付き整数を10進数表現 [-]dddd に変換します。
|
signed
char
|
short
|
int
|
long
|
long
long
|
※
|
N/A | ||
o
|
符号なし整数 を8進数表現 oooo に変換します。
|
unsigned
char
|
unsigned
short
|
unsigned
int
|
unsigned
long
|
unsigned
long
long
|
std::ptrdiff_t
の符号なしバージョン
|
N/A | ||
x
X
|
符号なし整数 を16進数表現 hhhh に変換します。
|
N/A | ||||||||
u
|
符号なし整数 を10進数表現 dddd に変換します。
|
N/A | ||||||||
f
F
(C++11)
|
浮動小数点数 を [-]ddd.ddd スタイルの10進表記に変換します。
|
N/A | N/A |
double
|
double
(C++11)
|
N/A | N/A | N/A | N/A |
long
double
|
e
E
|
浮動小数点数 を10進指数表記に変換します。
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
a
A
(C++11) |
浮動小数点数を16進指数表記に変換します。
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
g
G
|
浮動小数点数 を値と 精度 に応じて10進数表記または10進指数表記に変換します。
|
該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | |||
n
|
この関数呼び出しによってこれまでに 書き込まれた文字数 を返します。
|
signed
char
*
|
short
*
|
int
*
|
long
*
|
long
long
*
|
※
|
N/A | ||
p
|
実装定義の文字シーケンスを書き込み、 ポインタ を定義します。 |
N/A | N/A |
void
*
|
N/A | N/A | N/A | N/A | N/A | N/A |
| 注記 | ||||||||||
|
浮動小数点変換関数は、無限大を
非数は
変換指定子
char 、 unsigned char 、 signed char 、 short 、および unsigned short を出力するための変換指定子は、 デフォルト引数プロモーション によってプロモートされた型を期待しますが、値を出力する前に char 、 unsigned char 、 signed char 、 short 、 unsigned short に変換されます。可変引数関数が呼び出されるときに行われるプロモーションにより、これらの型の値を渡すことは安全です。
固定幅文字型(
std::int8_t
など)の正しい変換指定はヘッダ
<cinttypes>
で定義されています(ただし
PRIdMAX
、
PRIuMAX
などは
メモリ書き込み変換指定子
各変換指定子の動作の後に
シーケンスポイント
があります。これにより、複数の
変換指定が無効な場合、動作は未定義です。 |
||||||||||
戻り値
注記
ナロウ文字列は
std::snprintf
を提供しており、必要な出力バッファサイズを決定することが可能ですが、ワイド文字列には同等の機能が存在せず、バッファサイズを決定するために、プログラムは
std::swprintf
を呼び出し、結果の値を確認し、より大きなバッファを再割り当てして、成功するまで再試行する必要がある場合があります。
例
#include <clocale> #include <cwchar> #include <iostream> #include <locale> int main() { char narrow_str[] = "z\u00df\u6c34\U0001f34c"; // or "zß水🍌"; // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t warr[29]; // the expected string is 28 characters plus 1 null terminator std::setlocale(LC_ALL, "en_US.utf8"); std::swprintf(warr, sizeof warr/sizeof *warr, L"Converted from UTF-8: '%s'", narrow_str); std::wcout.imbue(std::locale("en_US.utf8")); std::wcout << warr << '\n'; }
出力:
Converted from UTF-8: 'zß水🍌'
関連項目
|
(C++11)
|
書式化された出力を
stdout
、ファイルストリーム、またはバッファに出力する
(関数) |
|
可変引数リストを使用して書式化されたワイド文字出力を
stdout
、ファイルストリーム
またはバッファに出力する (関数) |
|
|
ワイド文字列をファイルストリームに書き込む
(関数) |
|
|
Cドキュメント
を参照:
wprintf
,
fwprintf
,
swprintf
|
|