は、次のことを考えてみましょう: "05-04-AA-0F-0D":boost :: formatで16進数の出力を生成するには?
#include <vector>
#include <string>
#include <iostream>
#include <boost/format.hpp>
#include <boost/assign.hpp>
#include <boost/assign/list_of.hpp>
#include <boost/assign/std/vector.hpp>
using namespace std;
typedef unsigned char byte;
typedef vector<byte> byte_array;
const byte_array bytes = list_of(0x05)(0x04)(0xAA)(0x0F)(0x0D);
int main()
{
const string formatter = "%1%-%2%-%3%-%4%-%5%";
const string result = (format(formatter)
% bytes[0]
% bytes[1]
% bytes[2]
% bytes[3]
% bytes[4]
).str();
cout << result << endl;
return 0;
}
私はと印刷結果を見てみたいと思います。それを達成するためにフォーマッタ文字列に何をする必要がありますか?コンパイルおよびテスト
'bytes [5]'が範囲外です –
whoops、私の悪い編集 – Maciek
@Maciek私はそれが2年遅れていることを知っていますが、ここで私はこれらの状況で何をしているのですか? ...元の構造体(バイト)を保持したいのであれば、通常は修飾子(setfill、setbase)を使いません。各バイトを '(unsigned int)(unsigned char)'でキャストします。 – nhed