module Printf:sig..end
格式化输出函数。
val fprintf : out_channel -> ('a, out_channel, unit) format -> 'afprintf outchan format arg1 ... argN 根据格式字符串 format 格式化参数 arg1 到 argN,并将结果字符串输出到通道 outchan。
格式字符串是一个包含两种对象的字符字符串:普通字符,它们被简单地复制到输出通道;以及转换说明符,每个转换说明符都会导致参数的转换和打印。
转换说明符具有以下形式
% [flags] [width] [.precision] type
简而言之,转换说明符由 % 字符组成,后面跟着可选的修饰符和一个由一个或两个字符组成的类型。
类型及其含义如下
d, i:将整数参数转换为带符号的十进制数。标志 # 为大型值添加下划线以提高可读性。u, n, l, L, 或 N:将整数参数转换为无符号十进制数。警告:n, l, L 和 N 用于 scanf,不应用于 printf。标志 # 为大型值添加下划线以提高可读性。x:将整数参数转换为使用小写字母的无符号十六进制数。标志 # 为非零值添加 0x 前缀。X:将整数参数转换为使用大写字母的无符号十六进制数。标志 # 为非零值添加 0X 前缀。o:将整数参数转换为无符号八进制数。标志 # 为非零值添加 0 前缀。s:插入字符串参数。S:将字符串参数转换为 OCaml 语法(双引号,转义)。c:插入字符参数。C:将字符参数转换为 OCaml 语法(单引号,转义)。f:将浮点数参数转换为十进制表示法,样式为 dddd.ddd。F:将浮点数参数转换为 OCaml 语法(dddd. 或 dddd.ddd 或 d.ddd e+-dd)。使用 # 标志转换为十六进制(参见 h)。e 或 E:将浮点数参数转换为十进制表示法,样式为 d.ddd e+-dd(尾数和指数)。g 或 G:将浮点数参数转换为十进制表示法,样式为 f 或 e, E(以更紧凑的方式)。此外,结果的小数部分中会删除所有尾随零,如果不再存在小数部分,则会删除小数点字符。h 或 H:将浮点数参数转换为十六进制表示法,样式为 0xh.hhhh p+-dd(十六进制尾数,十进制指数,表示 2 的幂)。B:将布尔参数转换为字符串 true 或 falseb:转换布尔参数(已弃用;在新程序中不要使用)。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:对于数值转换,使用零而不是空格进行填充。+:对于带符号的数值转换,如果为正,则在数字前添加 + 符号。#:请求整数类型和浮点数类型 F 的备用格式样式。可选的 width 是一个整数,表示结果的最小宽度。例如,%6d 打印一个整数,并在其前面添加空格以填充至少 6 个字符。
可选的 precision 是一个点 .,后面跟着一个整数,表示 %f、%e、%E、%h 和 %H 转换中跟随小数点的位数,或者 %F、%g 和 %G 转换中显示的最多有效数字数。例如,%.4f 打印一个具有 4 位小数的 float。
width 或 precision 中的整数也可以指定为 *,在这种情况下,会获取一个额外的整数参数来指定相应的 width 或 precision。此整数参数紧接在要打印的参数之前。例如,%.*f 打印一个 float,其小数位数与在该浮点数之前给出的参数的值相同。
val printf : ('a, out_channel, unit) format -> 'a与 Printf.fprintf 相同,但输出到 stdout。
val eprintf : ('a, out_channel, unit) format -> 'a与 Printf.fprintf 相同,但输出到 stderr。
val sprintf : ('a, unit, string) format -> 'a与 Printf.fprintf 相同,但不是打印到输出通道,而是返回一个包含格式化参数结果的字符串。
val bprintf : Buffer.t -> ('a, Buffer.t, unit) format -> 'a与 Printf.fprintf 相同,但不是打印到输出通道,而是将格式化参数追加到给定的可扩展缓冲区(参见模块 Buffer)。
val ifprintf : 'b -> ('a, 'b, 'c, unit) format4 -> 'a与 Printf.fprintf 相同,但不打印任何内容。在有条件打印时忽略某些内容很有用。
val ibprintf : Buffer.t -> ('a, Buffer.t, unit) format -> 'a与 Printf.bprintf 相同,但不打印任何内容。在有条件打印时忽略某些内容很有用。
带延续的格式化输出函数。
val kfprintf : (out_channel -> 'd) ->
out_channel -> ('a, out_channel, unit, 'd) format4 -> 'a与 fprintf 相同,但不是立即返回,而是在打印结束时将其第一个参数传递给输出通道。
val ikfprintf : ('b -> 'd) -> 'b -> ('a, 'b, 'c, 'd) format4 -> 'a与上面的 kfprintf 相同,但不打印任何内容。在有条件打印时忽略某些内容很有用。
val ksprintf : (string -> 'd) -> ('a, unit, string, 'd) format4 -> 'a与上面的 sprintf 相同,但不是返回字符串,而是将其传递给第一个参数。
val kbprintf : (Buffer.t -> 'd) ->
Buffer.t -> ('a, Buffer.t, unit, 'd) format4 -> 'a与 bprintf 相同,但不是立即返回,而是在打印结束时将其第一个参数传递给缓冲区。
val ikbprintf : (Buffer.t -> 'd) ->
Buffer.t -> ('a, Buffer.t, unit, 'd) format4 -> 'a与上面的 kbprintf 相同,但不打印任何内容。在有条件打印时忽略某些内容很有用。
已弃用
val kprintf : (string -> 'b) -> ('a, unit, string, 'b) format4 -> 'aksprintf 的已弃用同义词。