printfmt, fPrintf(), snPrintf()
printf, sprintfに対応する処理を行います。
本ライブラリではMacro Poland氏のprintf,sprintfライブラリを利用しています。 https://github.com/mpaland/printf
ストリームIStreamOut
オブジェクトに対して<<
演算子の右オペランドとして利用します。
printfmt
クラスのコストラクタのパラメータの1番目fmt
に書式を指定します。以降のパラメータはC++テンプレートのパラメータパックで実装されており可変数引数となっています。printfのように書式に対応した引数を指定します。printfと違い引数の数は最大4つに制限されます。
ストリームIStreamOut
オブジェクトを出力先としてfprintfと同じ処理を行います。
1番目の引数がストリームオブジェクトとなる点を除きfprintfと同じ使い方です。
snprintfの処理を行います。
本クラスは namespace TWE
内に定義されています。
出力ストリームの基底クラスで、以下のメソッドが定義されており、1バイトの出力、改行文字など特殊クラスを受け付けるためのメソッドが定義されています。
operator ()
はchar_t
型の1文字を出力するための仮想関数です。write_w()
はwchar_t
型の出力に対応します。
ストリームへの出力は<<
演算子を用います。最終的には上記の出力用の関数が呼び出されます。
以下の例はITermクラスでの実装例です。
operator << の右オペランドとして以下の型に対応します。
曖昧性の解決のため、派生クラスで明示的なオーバーライドが必要になる場合があります。
特殊な文字列などを指定するためのオブジェクトを定義するための基底クラスです。
派生クラスとして CR LF (0x0d 0x0a) を出力する IStream_endl が定義されています。
オブジェクトcrlf
は以下のように使用します。
右オペランドの型
解説
char_t
1バイト出力する
const char *
文字列を出力する
wchar_t
ワイド文字を出力する(派生クラスで対応がある場合)
IStreamSpecial&
特殊文字列を出力する
printfmt
printf()に相当する出力を行う
const int
printf("%d", n)に相当する出力を行う
double
printf("%.3%, n)に相当する出力を行う