diff --git a/toml/combinator.hpp b/toml/combinator.hpp index ac8dd14..52aaaae 100644 --- a/toml/combinator.hpp +++ b/toml/combinator.hpp @@ -9,7 +9,10 @@ #include #include #include +#include #include +#include +#include #include // 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 { - std::ostringstream oss; - oss << "0x" << std::hex << std::setfill('0') << std::setw(2) - << static_cast(c); - return oss.str(); + std::array buf; + buf.fill('\0'); + const auto r = std::snprintf( + buf.data(), buf.size(), "0x%02x", static_cast(c) & 0xFF); + assert(r == buf.size() - 1); + return std::string(buf.data()); } }