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
最近のコメント