この記事は、初心者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
スポンサード リンク |
この記事のカテゴリ
- C++ ⇒ 十六進数で文字列に変換する (Boostのhex関数)