module Printf:整形出力関数sig
..end
val fprintf : out_channel ->
('a, out_channel, unit) format -> 'a
fprintf outchan format arg1 ... argN
は引数 arg1
から argN
を書式指定文字列 format
にしたがって整形し、結果の文字列をチャネル outchan
に出力します。
format
は通常の文字か変換指定子の並びから成る文字列です。
通常の文字は単純に出力チャネルにコピーされ、変換指定子は引数を変換して出力します。
変換指定子は次のような形式です。
% [flags] [width] [.precision] type
変換指定子は %
で始まり、次に省略可能な修飾子、そして引数の種類と出力形式を表すひとつないしはふたつの文字が続きます。出力形式とその意味は次のようになります。
d
、 i
、 n
、 l
、 L
、 N
: 引数の整数を符号付き十進数に変換します。u
: 引数の整数を符号なし十進数に変換します。x
: 引数の整数を小文字の符号なし十六進数に変換します。X
: 引数の整数を大文字の符号なし十六進数に変換します。o
: 引数の整数を符号なし八進数に変換します。s
: 引数文字列を挿入します。S
: 引数文字列を Caml 構文で(二重引用符でくくり、エスケープして)挿入します。c
: 引数文字を挿入します。C
: 引数文字を Caml 構文で(単引用符でくくり、エスケープして)挿入します。f
: 浮動小数点数引数を dddd.ddd
形式の十進表記に変換します。F
: 浮動小数点数引数を dddd.
か dddd.ddd
か d.ddd e+-dd
形式の Caml 構文に変換します。e
、 E
: 浮動小数点数引数を d.ddd e+-dd
(仮数部と指数部)形式の十進表記に変換します。g
、 G
: 浮動小数点数引数を f
、 e
、 E
の形式のうち最も短かくなる形式に変換します。B
: 真偽値の引数を文字列 true
か false
に変換します。b
: 真偽値の引数を変換します(後方互換性のために残されています。新しいプログラムでは使わないでください)。ld
、 li
、 lu
、 lx
、 lX
、 lo
: int32
の引数を二文字目で表される形式(十進、十六進、……)に変換します。nd
、 ni
、 nu
、 nx
、 nX
、 no
: nativeint
の引数を二文字目で表される形式に変換します。Ld
、 Li
、 Lu
、 Lx
、 LX
、 Lo
: int64
の引数を二文字目で表される形式に変換しますa
: ユーザー定義の表示器。書式指定としてはふたつの引数をとり、その第一引数に
outchan
(現在の出力チャネル)と第二引数を適用します。
第一引数はしたがって out_channel -> 'b -> unit
型で、第二引数は 'b
型でなければなりません。第一引数の出力が fprintf
の現在の出力位置に挿入されます。t
: %a
と同じですが、引数として out_channel -> unit
型の引数だけを取り、それに outchan
を適用します。{ fmt %}
: 書式指定文字列の変換。引数は fmt
と同じ型を取る書式指定でなければなりません。( fmt %)
: 書式指定文字列の置き換え。書式指定文字列を引数として受け取り、
fmt
をそれで置き換えた上で残りの引数を出力します。引数は fmt
と同じ型を取る書式指定でなければなりません。!
: 引数を取らず、出力をフラッシュします。%
: 引数を取らず、 %
を出力します。,
: 変換指定子を区切るためだけに使い、何も出力しません。flags
には次のものを指定できます。
-
: 出力を左寄せにします(デフォルトは右寄せです)。0
: 数値変換で、スペースの代わりに 0 で隙間を埋めます。+
: 数値変換で、正の数の前に +
を出力します。#
: 数値出力の際に代わりのスタイルで出力します(訳注: man printf(3) などを参照)width
には出力結果の最小幅を表す整数を指定します。例えば
%6d
なら、最低でも 6 文字幅になるように空白を前置して整数を出力します。
省略可能な precision
には、 .
に続けて、 %f
、 %e
、 %E
で小数点以下に表示する数字の桁数を表す整数を指定します。例えば、 %.4f
であれば float
を小数点以下 4 桁まで表示します。
val printf : ('a, out_channel, unit) format -> 'a
val eprintf : ('a, out_channel, unit) format -> 'a
val ifprintf : 'a -> ('b, 'a, unit) format -> 'b
val sprintf : ('a, unit, string) format -> 'a
Printf.fprintf
と同じですが、出力チャネルに表示する代わりに、引数を整形した結果を文字列として返します。val bprintf : Buffer.t -> ('a, Buffer.t, unit) format -> 'a
val kfprintf : (out_channel -> 'a) ->
out_channel ->
('b, out_channel, unit, 'a) format4 -> 'b
fprintf
と同じですが、表示が終わった際に直ちに戻らずに、出力チャネルを第一引数の関数に渡します。val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b
sprintf
と同じですが、文字列を返す代わりに、それを第一引数の関数に渡します。val kbprintf : (Buffer.t -> 'a) ->
Buffer.t -> ('b, Buffer.t, unit, 'a) format4 -> 'b
bprintf
と同じですが、出力が終わった際に直ちに戻らずに、第一引数の関数にバッファを引き渡します。val kprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b
ksprintf
の非推奨の別名です。