carcon999のブログ

12年間Y!ブログの記載を移行しました。電子工作関連の記事が多いです。

書式付フォーマット

■プログラム
{
int a = 10;
str = String::Format(L"DATA = 0x%02x,", a);
}
というような書き方をすると、エラーは発生しませんが期待する文字列が出力されません。
期待する出力は、"DATA = 0x0a,"なのですが・・・

□解決策
{
int a = 10;
str = String::Format(L"DATA = 0x{0:x2},", a);
}
になるようです。今までの書式とだいぶ異なるようです。{}(波括弧)内の'0:'は、引数の順番になります。例えば3つの引数を持つ16進数数値を文字列化するためには、
{
int a = 10, b = 20, c = 30;
str = String::Format(L"DATA = 0x{0:x2},0x{1:x2},0x{2:x2},", a, b, c);
}
という記述になります。
とりあえずは、数値 -> 16進数表示文字ができればよかったので目的を達成することができましたが、それ以外の書式化はまだ分かっていません。

★書式付フォーマット変換は、{}(波括弧)を利用した新形式に変換すべき。