refactor: use snprintf to show char in hex

instead of std::ostringstream.
This commit is contained in:
ToruNiina
2019-04-16 20:54:29 +09:00
parent 21fd1271d9
commit b3917aaadf

View File

@@ -9,7 +9,10 @@
#include <type_traits> #include <type_traits>
#include <iterator> #include <iterator>
#include <limits> #include <limits>
#include <array>
#include <iomanip> #include <iomanip>
#include <cstdio>
#include <cassert>
#include <cctype> #include <cctype>
// they scans characters and returns region if it matches to the condition. // they scans characters and returns region if it matches to the condition.
@@ -38,10 +41,12 @@ inline std::string show_char(const char c)
} }
else else
{ {
std::ostringstream oss; std::array<char, 5> buf;
oss << "0x" << std::hex << std::setfill('0') << std::setw(2) buf.fill('\0');
<< static_cast<int>(c); const auto r = std::snprintf(
return oss.str(); buf.data(), buf.size(), "0x%02x", static_cast<int>(c) & 0xFF);
assert(r == buf.size() - 1);
return std::string(buf.data());
} }
} }