![PrintFormat](https://celebpanda.com/wp/wp-content/uploads/2021/05/PrintFormat.jpg)
プリセットフォーマットに従って、エキスパートログにメッセージを表示します。
PrintFormat
void PrintFormat(
string format_string, // フォーマット文字列
... // シンプルな型の値
);
- 引数
引数名 | 初期値 | I/O | 詳細 |
format_string | - | IN | フォーマット文字列は簡単な記号で構成され、 format_stringの後の引数が続く場合、フォーマット仕様が含まれます。 |
... | - | IN | シンプルな型の値をカンマで区切って複数渡す事が出来ます。 引数の総数はformat_stringを含めて64を超える事は出来ません。 |
- 戻り値
無し。
- その他
ストラテジーテスターの最適化中では動作しません。
引数の値・順序・型は正確に修飾子のセットと正確に一致している必要があります。
一致していない場合、結果は不明です。
尚、PrintFormat()関数はprintf()と書いて使用する事が出来ます。
フォーマット文字列は(format_stringの)後に引数が続く場合、
この文字列はフォーマット仕様が含まれている必要があります。
フォーマット仕様は常にパーセント記号(%)で始まります。
左から右へフォーマット文字列が読み出されます。
最初のフォーマット仕様が満たされた場合(存在する場合)、
フォーマット文字列はプリセット仕様に従って最初のパラメータの値と変換して出力します。
第2のフォーマット仕様がある場合、次の引数の値と変換して出力して・・・
というようにフォーマット文字列終了まで処理されます。
フォーマット仕様の形式は以下の通りです。
%[flags][width][.precision][{h | l | ll | I32 | I64}]type
フォーマット仕様の各フィールドは、単純な記号または単純なフォーマットオプションを示す番号です。
最もシンプルな形式の仕様は、パーセント記号(%)と出力パラメータのタイプを定義しているシンボルです(例:%s)。
出力するフォーマット文字列にパーセント記号を表示させたい場合は、%%を使用します。
フラグ[flags]
フラグ | 詳細 | デフォルト動作 |
- | 左詰め表示する | 省略時は右詰め |
+ | 符号を付ける | 省略時は"-"符号のみ |
0 | 0を詰める。 0フラグは整数形式(i,u,x,X,o,d)で指定します。 精度仕様が設定されている場合(例えば %0.4d)は0は無視されます。 | 省略時は0詰めしません |
スペース(空白) | 整数の場合、出力値の前にスペースが挿入されます。 | スペース挿入されません |
# | o,x,Xフォーマットと一緒に使用する場合、 出力値の前に、0,0x,0Xが追加されます。 | 何も追加されません |
# | e,E,Aフォーマットと一緒に使用する場合、 値は常に小数点で表示されます。 | ゼロ以外の小数部分がある場合のみ小数点表示されます |
# | g,Gフォーマットと一緒に使用する場合、 出力値の小数点の有無を定義し、小数点以下のゼロの省略防止します。 フォーマットc,d,i,u,sと一緒に使用した場合、#フラグは無視されます。 | ゼロ以外の小数点がある場合のみ小数点表示されます。 小数点以下のゼロは省略されます。 |
幅[width]
正数(負数では無い)の小数は、出力シンボルの最小数を設定します。
出力シンボルの数値が指定された幅[width]よりも小さい場合、スぺースに対応する数値は位置に応じて左から追加されます。
-フラグ[flag]設定の場合は、右から追加されます。
0フラグ[flag]が存在する場合、ゼロの対応する数値は出力値の前に追加されます。
出力シンボルの数値が指定された幅[width]よりも大きい場合、出力値がカットされる事はありません。
アスタリスク(*)が幅[width]として指定されている場合は、
int型の値がパラメータリストに対応する位置にしなければなりません。
これは出力値の幅を指定する為に使用されます。
精度[precision]
正数(負数では無い)の出力精度(小数点以下の桁数)を設定します。
幅[width]仕様とは異なり、精度[precision]仕様は小数部分の一部をカットまたは丸める事が出来ます。
精度[precision]仕様はフォーマットタイプによって異なります。
フォーマット | 詳細 | デフォルト動作 |
a,A | 小数点以下の桁数を設定します | デフォルト精度:6 |
c,C | 使用できません | - |
d,i,u,o,x,X | 出力桁の最小数を設定します。 対応するパラメータ桁数が精度よりも小さい場合、0が出力値の左側に追加されます。 出力桁数が指定された精度よりも大きい場合は、出力値はカットされません。 | デフォルト精度:1 |
e,E,f | 小数点以下の出力桁数を設定します。 最後の数字は四捨五入されます。 | デフォルト精度:6 精度設定が0または小数部が存在しない場合、 小数点以下は表示されません。 |
g,G | 意味のある数字の最大数を設定します。 | 6つの意味のある数字が出力されます |
s,S | 文字列の出力シンボル数を設定します。 文字列の長さが精度を超えた場合、文字列はカットされます。 | 文字列全体が出力されます |
接頭辞(データサイズ指定) [{h | l | ll | I32 | I64}]
型 | 接頭辞 | 型の指定子 |
int | l | d, i, o, x, X |
uint | l | o, u, x, X |
long | ll | d, i, o, x, X |
short | h | d, i, o, x, X |
ushort | h | o, u, x, X |
int | l32 | d, i, o, x, X |
uint | l32 | o, u, x, X |
long | l64 | d, i, o, x, X |
ulong | l64 | o, u, x, X |
種類[type]
type | 型 | 出力フォーマット |
c | int | short型の記号(Unicode) |
C | int | char型の記号(ANSI) |
d | int | 符号付き10進数整数 |
i | int | 符号付き10進数整数 |
o | int | 符号無し8進数整数 |
u | int | 符号無し10進数整数 |
x | int | 符号なし16進整数。(小文字区別:abcdef) |
X | int | 符号なし16進整数。(大文字区別:ABCEDF) |
e | double | 実数の指数形式表示。 フォーマット例:[-]d.dddde[符号]ddd ・最初の[-]は符号。負数の場合は-符号をつける。 ・小数点前のdは1桁の数字。 ・小数点以下(eの前)のddddは1以上の10進数。 ・eの後の[符号]は指数の符号。マイナスの場合は-をつける。省略時は+相当。 ・小数点以下(eの後)のddd は指数の大きさを決定する数値 |
E | double | eのフォーマットと同様。 但し、出力時のe記号が大文字のEになります。 |
f | double | 実数表示。 フォーマット例:[-]dddd.dddd ・最初の[-]は符号。負数の場合は-符号をつける。省略時は正数。 ・ddddは1以上の10進数。 小数点より前の表示桁数は、数値サイズによって異なります。 小数点以下の桁数は必要な精度に依存します。 |
g | double | フォーマットf,eをコンパクトにした出力 |
G | double | フォーマットF,Eをコンパクトにした出力 |
a | double | 実数をIEEE754形式で表示。 フォーマット:[-]0xh.hhhh p±dd ・h.hhhhは仮数部(小文字の16進数で表示) ・ddは指数、10進数で表示。 小数点以下の桁数は精度仕様によって決定されます。 |
A | double | aのフォーマットと同様。 但し仮数部の16進数が大文字で表示され、指数部の記号が大文字のPで表示されます。 |
s | string | 文字列出力 |