Правильно pad отрицательные целые числа с нулями с std:: cout
я обнаружил, что этот вопрос уже задан, но ответ каждый дает
std::cout << std::setw(5) << std::setfill('0') << value << std::endl;
что хорошо для положительных чисел, но с -5, он печатает:
000-5
есть ли способ заставить его печатать -0005 или заставить cout всегда печатать не менее 5 цифр (что приведет к -00005), как мы можем сделать с printf?
1 ответов
std::cout << std::setw(5) << std::setfill('0') << std::internal << -5 << '\n';
// ^^^^^^^^
выход:
-0005
Edit:
для тех, кто заботится о таких вещах, N3337 (~c++11
),22.4.2.2.2
:
The location of any padding is determined according to Table 91.
Table 91 - Fill padding
State Location
adjustfield == ios_base::left pad after
adjustfield == ios_base::right pad before
adjustfield == internal and a
sign occurs in the representation pad after the sign
adjustfield == internal and
representation after stage 1 began
with 0x or 0X pad after x or X
otherwise pad before