2009-02-10 11 views
44

मैं अपने आउटपुट को सी ++ में कैसे प्रारूपित कर सकता हूं?सी ++ आउटपुट ऑपरेटर (printf समतुल्य) के साथ अग्रणी शून्य मुद्रित करें?

printf("%05d", zipCode); 

मैं जानता हूँ कि मैं सिर्फ C++ printf इस्तेमाल कर सकते हैं, लेकिन मैं उत्पादन ऑपरेटर << पसंद करेंगे: दूसरे शब्दों में, सी ++ इस तरह printf के उपयोग के बराबर क्या है।

क्या आप निम्न का उपयोग करेंगे?

std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl; 

उत्तर

69

इस चाल करना होगा:

std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl; 
+2

ध्यान दें कि आप संरेखण के लिए 'cout << left' या 'cout << right' का भी उपयोग कर सकते हैं। –

7

setw and setfill कॉल का प्रयोग करें

#include <iostream> 
#include <iomanip> 

using namespace std; 
cout << setw(5) << setfill('0') << zipCode << endl; 

// or use this if you don't like 'using namespace std;' 
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl; 

सबसे आम आईओ manipulators कि गद्दी पर नियंत्रण कर रहे हैं:

  • std::setw(width) सेट टी की चौड़ाई वह क्षेत्र
  • std::setfill(fillchar) भरने वाले चरित्र को सेट करता है।
  • std::setiosflags(align) संरेखण सेट करता है, जहां संरेखण ios :: left या ios :: right है।
+0

पुन: सक्रिय और + 1'ed चूंकि यह दिखाता है कि इसे किसी भी नामस्थान में कैसे करना है (सेटफिल भी जोड़ा गया है, उम्मीद है कि आप एम नहीं हैं आईएनडी)। – paxdiablo

+0

पर्याप्त मेला। "नेमस्पेस एसटीडी का उपयोग करना;" निश्चित रूप से बुराई है। ;) –

+0

मुझे लगता है कि इस उत्तर का उल्लेख करना चाहिए कि, 'std :: setw' से सेटिंग के विपरीत,' std :: setfill' की सेटिंग आउटपुट के बाद चिपक जाएगी, दूसरे शब्दों में 'std :: के लिए fill character cout' स्थायी रूप से बदला जाएगा (जब तक किसी अन्य 'std :: setfill' द्वारा संशोधित नहीं किया जाता है)। चूंकि यह असंभव है क्योंकि यह वांछनीय है, यह पिछले भरने वाले चरित्र को सहेजने और पुनर्स्थापित करने के लिए सबसे अच्छा प्रतीत होता है। –

0

या,

char t[32]; 
sprintf_s(t, "%05d", 1); 

ओ पी के रूप में इच्छाशक्ति उत्पादन 00001 पहले से ही करना चाहता था

+3

ओपी ने स्पष्ट रूप से ऐसे तरीके से पूछा जो प्रिंट के बजाय '<<' ऑपरेटर का उपयोग करता है। – jankes

+0

@jankes जो होगा: std :: cout << "ज़िप कोड:" << sprintf_s (टी, "% 05d", 1) << endl; –

संबंधित मुद्दे