この記事は、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を使えるとは限りませんので、備えあれば憂いなしです。
スポンサード リンク |
この記事のカテゴリ
- C++ ⇒ std::string版sprintf/vsprintfお試し