概要

 Visual C++のprintf系の書式指定文字列は以下の書式で指定します。
 %[flags][width][.precision][サイズプリフィックス]type
 []内は省略可能

flags(フラグディレクティブ)

フラグ説明
-左詰め
+符号付の場合+又は-を付加
#typeの指定値がo,x,Xの場合0または0x,0Xを付加
0最小幅に達するまで0を付加

width

 flagsも含めた出力できる最小文字数を指定。省略可能
 文字列を表示する場合は右寄せとなる。

.precision(精度指定)

 flagsを含めない最大文字数を指定。省略可能
 浮動小数点の場合は小数点以下の桁数。

[サイズプリフィックス]type

[サイズリフィックス]type説明
i符号付整数int
u符号無し整数unsigned int
x又はX16進数int
o8進数int
e浮動小数点 [-]d.ddddde±ddddouble
f浮動小数点 [-]dd.dddddouble
s文字列関数によって異なる
TCHAR*,char* ,WCHAR *
I64i64bit符号付整数INT64,__int64
I64u64bit符号無し整数UINT64,unsigned __int64
I64x64bit符号無し整数16進数UINT64,unsigned __int64
c文字関数によって異なる
TCHAR,char,WCHAR
wsワイド文字列WCHAR*

動作例

 書式指定文字の指定例を以下に示します。
 %[flags][width][.precision][サイズプリフィックス]type
 []内は省略可能
 表中のは半角空白1文字を意味する。
変数書式文字列出力例備考
3.141592653589793%06.3f03.142小数点以下3桁。全体で6文字にするため先頭に0を付加
3.141592653589793%.5e3.14159e+000小数点以下5桁
3.141592653589793%.5f3.14159小数点以下5桁
10%.5i000105文字になるように0を付加
-10%+.5i-000105文字になるように0を付加後、符号-を付加
10%+.5i+000105文字になるように0を付加後、符号+を付加
10%+5i□□+10符号+を付加後5文字になるように空白を付加
-10%+5i□□-10符号-を付加後5文字になるように空白を付加
-10%+5.5i-000105文字になるように0を付加後、符号-を付加
0x1234%5x12345文字になるように空白を付加して16進数出力
0x1234%.5x012345文字になるように0を付加して16進数出力
0x1234%#.5x0x012345文字になるように0を付加後、0xを付加して16進数出力
0x1234%#5x0x12340xを付加すると5文字以上なのでそのまま16進数出力
0x1234%#7x0x12340xを付加すると7文字未満なので空白を付加して16進数出力
011064%#7o0110640を付加すると7文字未満なので空白を付加して8進数出力
L"漢字"%10s□□□□□□□□漢字10文字になるように空白を付加して出力
L"漢字"%-10s漢字□□□□□□□□10文字になるように空白を付加して出力
"漢字"%-10s漢字□□□□□□10文字になるように空白を付加して出力(マルチバイトなので漢字1文字は2文字として数える)
0x1234567812345678%I64u131176846517314111264bit符号無し整数を出力
0x1234567812345678%I64x123456781234567864bit整数を16進数で出力
L"漢字"%ws漢字ワイド文字列をprintfで出力