2011-09-14 13 views
6

cout का उपयोग करते समय, <iomanip> शीर्षलेख में परिभाषित डिफ़ॉल्ट स्वरूपक क्या है? दूसरे शब्दों में, एक बार जब मैंने अपना फॉर्मेटर fixed पर cout << fixed << setPrecision(2) का उपयोग कर सेट किया है, तो मैं इसे वापस कैसे बदलूं? या, मैं इसे से पर बदल रहा हूं?cout में `fixed` के विपरीत क्या है?

उत्तर

4

std::fixed के विपरीत std::scientific है।

(आप this great answer में manipulators का एक अच्छा सूची मिल।)

1

आप किसी भी झंडे को अनसेट करने के लिए resetiosflags() का उपयोग कर सकते हैं।

+0

वहाँ एक "डिफ़ॉल्ट" है कि मैं करने के लिए सेट कर सकते हैं? – Moshe

+0

मेरा मानना ​​है कि डिफ़ॉल्ट 'std :: ios :: वैज्ञानिक' है। – Chad

+0

@Moshe: दुर्भाग्य से, स्ट्रीम को पूरी तरह से रीसेट करने का कोई आसान तरीका नहीं है। यहां तक ​​कि सबसे विस्तृत कोड मैंने ऐसा करने के लिए देखा है (जेम्स कन्ज़ द्वारा, एक दशक पहले से अधिक) कुछ गूढ़ गुणों पर याद आती है, जैसे 'iword' और' pword'। (बेशक, जेम्स सीमाओं के बारे में पूरी तरह से अवगत था।) हालांकि, आप ['std :: ios :: flags()'] (http://www.cplusplus.com/reference/iostream/] के साथ बहुत दूर हो सकते हैं ios_base/झंडे /)। – sbi

1

std::fixed के विपरीत std::scientific है। यह आपके लिए कर सकता है।

हालांकि, अगर आप अधिक झंडे बहाल करने के लिए, या यदि आप पिछले राज्य की जरूरत है, डिफ़ॉल्ट के बजाय आप बेहतर समाधान का उपयोग कर सकते चाहते हैं:

  1. std::resetiosflags जोड़तोड़ आपको विशिष्ट झंडे रीसेट की सुविधा देता है उनके डिफ़ॉल्ट;

  2. दो ios::flags फ़ंक्शंस आपको प्रारूप झंडे के पिछले मानों को सहेजने और पुनर्स्थापित करने देते हैं।

+1

उहम, "std :: fixed' के विपरीत" डिफ़ॉल्ट पर वापस जाएं "के अर्थ में' std :: वैज्ञानिक' नहीं है। यह एक स्वचालित प्रारूप-स्विचिंग मोड की तरह है। –

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