この記事は、初心者C++er Advent Calendar 2016の4日目の記事です。


C++で、数値を文字列に変換する関数といえば、まずはstd::to_string (cpprefjp)です。ところが、この関数は、十進法で結果が出てきます。ほかによく使うものと言えば、十六進法です。というわけで、十六進法で文字列に変換する方法の話です。

標準ライブラリにいい感じのものがないので、Boostに頼ります。使いますのは、hexという単純な名前の関数です。

#include <iostream>
#include <string>
#include <iterator>
#include <cstdint>
#include <boost/algorithm/hex.hpp>
 
int main()
{
  std::uint32_t x = 0xdeadbeaf;
  std::string s;
  boost::algorithm::hex(&x, &x + 1, std::back_inserter(s));
  std::cout << s << std::endl;
}

このプログラムを実行すると、変数sの中身は”DEADBEAF”となり、それが出力されます。

hex関数は、「イテレータ2つまたはRangeで複数要素を指定し、一気に変換する関数」という設計になっています。ところが、このように1要素だけ変換するのに使うこともできるんです。

というわけで、boost::algorithm::hex関数を使い、数値オブジェクト1要素を文字列に変換する、という内容でした。こういう使い方、意外と見かけなかったので、今回紹介することにしました。

リファレンス: The Boost Algorithm Library – hex

スポンサード リンク

この記事のカテゴリ

  • ⇒ 十六進数で文字列に変換する (Boostのhex関数)