В проекте, где мне это нужно, используется немного больше, чем в C ++ 11, а именно GMP , который поддерживает модификатор печати %a
из C99:
// Include cstdarg / stdarg.h prior to gmp.h in the case
// we want va_list functions like gmp_vfprintf.
#include <cstdarg>
#include <gmp.h>
void func (double d)
{
gmp_printf ("%a", d);
}
#include <iostream>
void func (std::ostream& ost, double d)
{
auto len = gmp_snprintf (nullptr, 0, "%a", d);
char str[1 + len];
gmp_sprintf (str, "%a", d);
ost << str;
}