Chcę cout
wypisać liczbę całkowitą z wiodącymi zerami, więc wartość 1
zostanie wydrukowana jako, 001
a wartość 25
wydrukowana jako 025
. W jaki sposób mogę to zrobić?
c++
formatting
cout
jamieQ
źródło
źródło
char* or char[]
), aby nie konsolować bezpośrednio. Właściwie piszę funkcję, która zwraca sformatowany ciąg<iostream>
i<iomanip>
na górze pliku, i będziesz musiał napisaćusing namespace std;
, ale to zła praktyka, więc może zamiast tego powinieneś poprzedzić trzy identyfikatory w tej odpowiedzistd::
.Innym sposobem na osiągnięcie tego jest użycie starej
printf()
funkcji języka C.Możesz użyć tego jak
Zostanie wydrukowane
09 - 01 - 0001
na konsoli.Możesz także użyć innej funkcji,
sprintf()
aby zapisać sformatowane dane wyjściowe w ciągu znaków, jak poniżej:Nie zapomnij dołączyć
stdio.h
pliku nagłówka do swojego programu dla obu tych funkcjiRzecz, na którą należy zwrócić uwagę:
Możesz wypełnić puste miejsce 0 lub innym znakiem (nie liczbą).
Jeśli napiszesz coś w rodzaju
%24d
specyfikatora formatu, nie spowoduje to wypełnienia2
pustych miejsc. Spowoduje to ustawienie padu24
i wypełnienie pustych miejsc.źródło
To daje wynik:
źródło
źródło
char* or char[]
), aby nie konsolować bezpośrednio. Właściwie piszę funkcję, która zwraca sformatowany ciągstd::stringstream
.sprintf(s, "%02d-%02d-%04d", dd, mm, yy);
gdzies
jestchar*
idd, mm, yy
jestint
typu. Spowoduje to zapisanie02-02-1999
formatu zgodnie z wartościami w zmiennych.W C ++ 20 będziesz mógł:
źródło
Chciałbym użyć następującej funkcji. Nie lubie
sprintf
; nie robi tego, co chcę !!źródło
Kolejny przykład wyświetlania daty i godziny za pomocą zera jako znaku wypełniającego w wystąpieniach wartości jednocyfrowych: 2017-06-04 18:13:02
źródło