Format

最近sprintfにstringを突っ込んで実行時にぶっ飛ぶことが多くなってまいりました
素直にboost::formatあたりを使えばいいのでしょうけど勉強もかねて
自作Formatクラスでも作ってみることにします。

まずよく間違えるところをあげてみると個人的には

①sprintfにstringをぶっこんでしまう
②書式で指定した型と渡す引数の型がちがう。(%sなのにintを渡したり)
③書式で指定したパラメーターの数と引数の数が一致しない。

と言ったあたりでしょうか。
ただ、だいたい書式自体が短かったり、引数が多くても2個とかだったりするので
②,③の間違えっていうのは、自分の使い方ではあんまりなくて
②と③のチェックは適当でいい気がします。①だけちゃんとチェックできれてばOKかな。
実際書式がコンパイル時に決定できるわけじゃないので
静的なチェックていったら①くらいしかできないし。
それから使う書式は大体%sとか%dくらいなので、基本的にはstringが渡されたら%s扱い
intが渡されたら%d扱い、unsignedだたら%u扱いと簡単な仕様にしとく。
で、それだけだと%05dとかできないので、別の方法で細かい指定もできるようにする
という風にしましょうか。
あとboost::formatの%1%みたいのを真似て$1とかで引数指定できるといいな。
その場合%とか$の文字自体の出力はどうするかが問題になるけど
今回は何の対策もしないってことで。