From 91c8f61a89346c5874a4009bfb6950db8f560377 Mon Sep 17 00:00:00 2001 From: Luigi 'Comio' Mantellini Date: Mon, 24 Mar 2014 08:35:25 +0100 Subject: [PATCH] Format string using ostringstream and avoiding #if/#endef --- Foundation/src/NumberFormatter.cpp | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/Foundation/src/NumberFormatter.cpp b/Foundation/src/NumberFormatter.cpp index b7b27e7..714acab 100644 --- a/Foundation/src/NumberFormatter.cpp +++ b/Foundation/src/NumberFormatter.cpp @@ -19,6 +19,8 @@ #include "Poco/NumberFormatter.h" #include "Poco/MemoryStream.h" +#include +#include #include #if !defined(POCO_NO_LOCALE) #include @@ -27,16 +29,6 @@ #include -#if defined(_MSC_VER) || defined(__MINGW32__) - #define I64_FMT "I64" -#elif defined(__APPLE__) - #define I64_FMT "q" -#else - #define I64_FMT "ll" -#endif - - - namespace Poco { @@ -475,13 +467,15 @@ void NumberFormatter::append(std::string& str, const void* ptr) { - char buffer[24]; -#if defined(POCO_PTR_IS_64_BIT) - std::snprintf(buffer, sizeof(buffer), "%016" PRIXPTR, (UIntPtr) ptr); -#else - std::snprintf(buffer, sizeof(buffer), "%08" PRIXPTR, (UIntPtr) ptr); -#endif - str.append(buffer); + std::ostringstream os; + + os << std::hex + << std::setw(sizeof(ptr) * 2) + << std::setfill('0') + << std::setiosflags(std::ios::uppercase) + << ptr; + + str.append(os.str()); }