[c++] Как я могу поместить int с ведущими нулями при использовании оператора cout <<?


Answers

Другим способом достижения этой цели является использование старой printf() языка C

Вы можете использовать это как

int dd = 1, mm = 9, yy = 1;
printf("%02d - %02d - %04d", mm, dd, yy);

Это будет печатать 09 - 01 - 0001 на консоли.

Вы также можете использовать другую функцию sprintf() для записи форматированного вывода в строку, как показано ниже:

int dd = 1, mm = 9, yy = 1;
char s[25];
sprintf(s, "%02d - %02d - %04d", mm, dd, yy);
cout << s;

Не забудьте включить в свою программу заголовочный файл stdio.h для обеих этих функций

Следует отметить:

Вы можете заполнить пустое пространство либо 0, либо другим символом (не числом).
Если вы пишете что-то вроде спецификатора формата %24d , это не будет заполнять 2 в пустых местах. Это установит площадку на 24 и заполнит пробелы.

Question

Я хочу, чтобы cout int с ведущими нулями, поэтому значение 1 будет напечатано как 001 а значение 25 напечатано как 025 . Как я могу это сделать?




другой пример для вывода даты и времени с использованием нуля в качестве символа заливки для экземпляров однозначных значений: 2017-06-04 18:13:02

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;

int main()
{
    time_t t = time(0);   // get time now
    struct tm * now = localtime(&t);
    cout.fill('0');
    cout << (now->tm_year + 1900) << '-'
        << setw(2) << (now->tm_mon + 1) << '-'
        << setw(2) << now->tm_mday << ' '
        << setw(2) << now->tm_hour << ':'
        << setw(2) << now->tm_min << ':'
        << setw(2) << now->tm_sec
        << endl;
    return 0;
}



cout.fill( '0' );    
cout.width( 3 );
cout << value;





Related