boost::formatの使い方

どうもC++のマニピュレータを用いた文字列フォーマットはとっつきにくく、いつまでたっても慣れないので、使用できる環境ではboost::formatを使用しています


基本のパターン。printf()のようなフォーマットで出力できます。引数は%で区切って順に設定します

#include <boost/format.hpp>
#include <iostream>

int main() {
  // 基本的な使い方
  const char* name = "Boost Format";
  const int version = 2;

  std::cout << boost::format("Hello '%s' version %d\n") %
               name % version;

...
# 出力結果
Hello 'Boost Format' version 2

対応する引数の位置を%N%で指定できます

  // 引数順番指定
  std::cout << boost::format("Hello '%2%' version %1%\n") %
                 version % name;
# 出力結果
Hello 'Boost Format' version 2

出力桁数の指定、0埋指定もprintf()と同様です

  // 出力桁数
  std::cout << boost::format("%.3f\n") % 1.23456;

  // 0埋め
  std::cout << boost::format("%08X\n") % 256;

# 出力結果
1.235
00000100

#で基数の出力が可能です

  // 基数表示
  std::cout << boost::format("decimal %#d\n") % 128;
  std::cout << boost::format("octal %#o\n") % 128;
  std::cout << boost::format("hexadecimal %#X\n") % 128;
# 出力結果
decimal 128
octal 0200
hexadecimal 0X80

booleanをtrue, falseで出力可能です

  // boolean表示
  std::cout << boost::format("%1$b == %1$d\n") % true;
# 出力結果
true == 1

おすすめ