2015-12-14 45 views
7

के साथ स्वरूपण मेरे पास कुछ पुराना सी कोड है जिसे मैं C++ में व्यवहार को दोहराने की कोशिश कर रहा हूं। यह printf संशोधक का उपयोग करता है: "% 06.02f"।मिलानिंग printf iomanip

मैं naively सोचा था कि iomanip बस के रूप में करने में सक्षम था, और आपने क्या किया:

cout << setfill('0') << setw(6) << setprecision(2) 

मैं उत्पादन के लिए परीक्षण संख्या 123.456, printf पैदावार का प्रयास करते हैं:

123,46

लेकिन cout उपज:

1.2 + E02

क्या मैं iomanip में क्या कर सकते हैं यह दोहराने के लिए है, या मैं printf का उपयोग कर के लिए वापस जाना चाहिए?

[Live Example]

+0

boost :: format() पर एक नज़र डालने का प्रयास करें। यह iostreams के लिए printf() प्रकार वाक्यविन्यास का समर्थन करता है और टाइप सुरक्षित है। –

+0

@ जोनट्रैंटवेन जबकि मैं टिप की सराहना करता हूं (विशेष रूप से चूंकि बढ़ावा देने में बहुत सारी चीजें अंततः मानक में जाती हैं) जहां भी संभव हो, मुझे बढ़ावा शामिल नहीं होता है। और यहां ऐसा लगता है कि इसे शामिल न करना संभव है। –

उत्तर

2

सी ++ IOStreams में प्रारूप सेटिंग इसी के लिए तीन सी प्रारूप विनिर्देशक नक्शा:

  • %f ->std::ios_base::fixed (फिक्स्ड बिन्दु अंकन) आम तौर पर out << std::fixed का उपयोग कर निर्धारित किया है।
  • %e ->std::ios_base::scientific (वैज्ञानिक नोटेशन) आम तौर पर out << std::scientific का उपयोग करके सेट किया गया।
  • %g -> डिफ़ॉल्ट सेटिंग, आमतौर पर out.setf(std::fmtflags(), std::ios_base::floatfield) या सी ++ 11 और बाद में out << std::defaultfloat का उपयोग करके सेट करें। डिफ़ॉल्ट स्वरूपण अन्य प्रारूपों के "सर्वश्रेष्ठ" को उत्पन्न करने का प्रयास कर रहा है, जो निर्धारित अंकों का निश्चित मात्रा मानते हैं।

परिशुद्धता, चौड़ाई और भरने वाला चरित्र आपके द्वारा पहले से बताए गए तरीके से मेल खाता है।

4

std::fixed का प्रयास करें:

std::cout << std::fixed; 

str स्ट्रीम के लिए floatfield प्रारूप फ़्लैग सेट करता है तय करने के लिए।

floatfield, fixed करने के लिए सेट फ्लोटिंग प्वाइंट मूल्यों निश्चित बिंदु अंकन का उपयोग लिखा जाता है जब: मूल्य के रूप में परिशुद्धता क्षेत्र (precision) द्वारा निर्दिष्ट दशमलव भाग में बिल्कुल के रूप में कई अंकों के साथ प्रस्तुत किया जाता है और कोई साथ एक्सपोनेंट हिस्सा

+0

यूप, जो समझ गया, इस संदर्भ में तय करने का क्या अर्थ है? –

+1

@ जोनाथनमी यह निश्चित नोटेशन का उपयोग करता है। मैंने पोस्ट अपडेट किया। – AlexD