Кажется, в стандартной библиотеке его уже нет.Если вы не против многословия, просто сделайте это простым способом вручную:
if (std::signbit(number) == false) // to avoid traps related to +0 and -0
std::cout << " ";
std::cout << number;
(Не забудьте #include <cmath>
для signbit
!)
Но этобольше "обходного пути".Вы также можете переопределить фасет num_put
: (эта реализация основана на примере на cppreference)
// a num_put facet to add a padding space for positive numbers
class sign_padding :public std::num_put<char> {
public:
// only for float and double
iter_type do_put(iter_type s, std::ios_base& f,
char_type fill, double v) const
{
if (std::signbit(v) == false)
*s++ = ' ';
return std::num_put<char>::do_put(s, f, fill, v);
}
};
И использовать его так:
// add the facet to std::cout
std::cout.imbue(std::locale(std::cout.getloc(), new sign_padding));
// now print what you want to print
std::cout << number;
См. живое демо .Таким образом, вы можете повторно использовать код.