जवाबों:
निम्नलिखित के साथ,
#include <iomanip>
#include <iostream>
int main()
{
std::cout << std::setfill('0') << std::setw(5) << 25;
}
आउटपुट होगा
00025
setfill
' '
डिफ़ॉल्ट रूप से अंतरिक्ष वर्ण ( ) पर सेट है । setw
छपने के लिए क्षेत्र की चौड़ाई निर्धारित करता है, और यह बात है।
यदि आप यह जानने में रुचि रखते हैं कि सामान्य रूप से आउटपुट स्ट्रीम कैसे बनाते हैं, तो मैंने एक और प्रश्न के लिए एक उत्तर लिखा, आशा है कि यह उपयोगी है: स्वरूपण C ++ कंसोल आउटपुट।
<iostream>
और शामिल करने की आवश्यकता होगी <iomanip>
, और आपको लिखने की आवश्यकता होगी using namespace std;
, लेकिन यह बुरा अभ्यास है इसलिए शायद आपको इस उत्तर में तीन पहचानकर्ताओं के साथ उपसर्ग करना चाहिए std::
।
इसे प्राप्त करने का एक और तरीका printf()
सी भाषा के पुराने फ़ंक्शन का उपयोग करना है
आप इस तरह का उपयोग कर सकते हैं
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.fill('*');
cout << -12345 << endl; // print default value with no field width
cout << setw(10) << -12345 << endl; // print default with field width
cout << setw(10) << left << -12345 << endl; // print left justified
cout << setw(10) << right << -12345 << endl; // print right justified
cout << setw(10) << internal << -12345 << endl; // print internally justified
यह उत्पादन का उत्पादन करता है:
-12345
****-12345
-12345****
****-12345
-****12345
cout.fill( '0' );
cout.width( 3 );
cout << value;
char* or char[]
) सीधे सांत्वना करने के लिए नहीं। वास्तव में मैं एक फंक्शन लिख रहा हूं, जो स्वरूपित स्ट्रिंग
std::stringstream
।
sprintf(s, "%02d-%02d-%04d", dd, mm, yy);
जहां s
है char*
और dd, mm, yy
के हैं int
प्रकार। यह 02-02-1999
चर में मूल्यों के अनुसार प्रारूप लिखेगा ।
मैं निम्नलिखित फ़ंक्शन का उपयोग करूंगा। मुझे पसंद नहीं है sprintf
; यह वह नहीं करता जो मैं चाहता हूँ !!
#define hexchar(x) ((((x)&0x0F)>9)?((x)+'A'-10):((x)+'0'))
typedef signed long long Int64;
// Special printf for numbers only
// See formatting information below.
//
// Print the number "n" in the given "base"
// using exactly "numDigits".
// Print +/- if signed flag "isSigned" is TRUE.
// Use the character specified in "padchar" to pad extra characters.
//
// Examples:
// sprintfNum(pszBuffer, 6, 10, 6, TRUE, ' ', 1234); --> " +1234"
// sprintfNum(pszBuffer, 6, 10, 6, FALSE, '0', 1234); --> "001234"
// sprintfNum(pszBuffer, 6, 16, 6, FALSE, '.', 0x5AA5); --> "..5AA5"
void sprintfNum(char *pszBuffer, int size, char base, char numDigits, char isSigned, char padchar, Int64 n)
{
char *ptr = pszBuffer;
if (!pszBuffer)
{
return;
}
char *p, buf[32];
unsigned long long x;
unsigned char count;
// Prepare negative number
if (isSigned && (n < 0))
{
x = -n;
}
else
{
x = n;
}
// Set up small string buffer
count = (numDigits-1) - (isSigned?1:0);
p = buf + sizeof (buf);
*--p = '\0';
// Force calculation of first digit
// (to prevent zero from not printing at all!!!)
*--p = (char)hexchar(x%base);
x = x / base;
// Calculate remaining digits
while(count--)
{
if(x != 0)
{
// Calculate next digit
*--p = (char)hexchar(x%base);
x /= base;
}
else
{
// No more digits left, pad out to desired length
*--p = padchar;
}
}
// Apply signed notation if requested
if (isSigned)
{
if (n < 0)
{
*--p = '-';
}
else if (n > 0)
{
*--p = '+';
}
else
{
*--p = ' ';
}
}
// Print the string right-justified
count = numDigits;
while (count--)
{
*ptr++ = *p++;
}
return;
}
आउटपुट का एक और उदाहरण शून्य अंकों का एकल अंकों के मूल्यों पर एक भरण चरित्र के रूप में उपयोग करना है: 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;
}
char* or char[]
) सीधे सांत्वना करने के लिए नहीं। वास्तव में मैं एक फंक्शन लिख रहा हूं, जो स्वरूपित स्ट्रिंग