c++ лидирующие нули - Как я могу поместить int с ведущими нулями при использовании оператора cout <<?
Другим способом достижения этой цели является использование старой 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
и заполнит пробелы.
Я хочу, чтобы cout
int с ведущими нулями, поэтому значение 1
будет напечатано как 001
а значение 25
напечатано как 025
. Как я могу это сделать?
cout.fill( '0' );
cout.width( 3 );
cout << value;
Другой пример для вывода даты и времени с использованием нуля в качестве символа заполнения для экземпляров однозначных значений: 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;
}