#include <sstream>
#include <stdexcept>
#include <algorithm>
+#include <cmath> // for round()
#include <wchar.h>
#include <stdlib.h>
#include <iconv.h>
#include <i18n.h>
+#include <boost/numeric/conversion/cast.hpp>
+
#include <stringfunc.hxx>
using namespace std;
} // eo nice_unit_format(int input)
+string nice_unit_format(
+ const double input,
+ const UnitFormat format,
+ const UnitBase base
+)
+{
+ // round as double and cast to int64_t
+ // cast raised overflow error near max val of int64_t (~9.2e18, see unittest)
+ int64_t input_casted_and_rounded =
+ boost::numeric_cast<int64_t>( round(input) );
+
+ // now call other
+ return nice_unit_format( input_casted_and_rounded, format, base );
+} // eo nice_unit_format(double input)
+
+
string escape(const string &s)
{
string out(s);
const UnitBase base = UnitBase1024
);
+std::string nice_unit_format(
+ const double input,
+ const UnitFormat format = ShortUnitFormat,
+ const UnitBase base = UnitBase1024
+);
+
bool replace_all(std::string &base, const std::string *ist, const std::string *soll);
bool replace_all(std::string &base, const char *ist, const char *soll);
bool replace_all(std::string &base, const char *ist, const std::string *soll);