C++でsprintfで書き込むのに必要なバッファの大きさを知る一般的な方法はないね。
C99だと書込先にヌルを指定すれば、戻り値でわかるようになったんだけど。

VC++の_scprintfのように独自関数を使ったり、
ヌルデバイスをfopenしてfprintfしたりという環境依存の方法か、
標準ライブラリのものを使うのを諦める。
(自分でバッファサイズが分かるものを作ったり、あるいはBoost.Formatのような既製品を使ったり)