この記事は、C++ (fork) Advent Calendar 2013 18日目です。


結果をstd::stringで返すsprintf/vsprintfのラッパー関数を書いてみました。

C++11より、std::basic_stringの要素がメモリ上で連続することが決まっています。なので容易に書けるはずなのですが、意外とググっても見かけませんでした。そのため、自分で作ることにしました。

名前はstrprintfとstrvprintfです。

初めは、<cstdio>をインクルードしてstd::vsnprintfと書こうとしましたが、<stdio.h>の::vsnprintfしか使えない環境も少なくないようなので、そちらにしました。たとえば、Cygwinはstd::vsnprintfが使えませんでした。

もちろん、使って良いならletsboost::format (Let’s Boost)のほうが高機能でしかも安全性が高いです。しかし、常にBoostを使えるとは限りませんので、備えあれば憂いなしです。

スポンサード リンク

この記事のカテゴリ

  • ⇒ std::string版sprintf/vsprintfお試し