एक ही प्रोग्राम में विस्तृत और संकीर्ण आउटपुट स्ट्रीम को मिक्स करना
"सी कुकबुक" में, यह उल्लेख किया गया है कि कॉउट और डब्ल्यूकाउट को मिक्स करना एक ही कार्यक्रम नहीं करना चाहिए. यह टिप्पणी इस तथ्य से उत्पन्न होती है कि सी और सी मानक तय करते हैं कि स्ट्रीम का एक ओरिएंटेशन होता है, और एक बार जब यह ओरिएंटेशन एक स्ट्रीम के लिए सेट हो जाता है, तो आपको उन ऑपरेशनों को मिश्रण नहीं करना चाहिए जो ओरिएंटेशन के साथ असंगत हैं।
क्या क्या व्यवहार में इसका मतलब है?
जब पहली बार कॉउट या डब्ल्यूकाउट कहा जाता है, तो स्टडआउट के लिए ओरिएंटेशन सेट हो जाता है। Cout के मामले में, stdout एक बाइट-उन्मुख स्ट्रीम बन जाता है, और wcout के मामले में, stdout एक विस्तृत-उन्मुख स्ट्रीम बन जाता है। सी मानक [27.4.1] और सी मानक [7.19.2] के अनुसार, एक बार स्ट्रीम का ओरिएंटेशन सेट हो जाने पर, आपको ऐसे फ़ंक्शन को कॉल नहीं करना चाहिए जो उस स्ट्रीम के ओरिएंटेशन के साथ संगत नहीं है।
नियम के अपवाद
हालांकि, यह ध्यान रखना महत्वपूर्ण है कि सभी कंपाइलर इस मानक का सख्ती से पालन नहीं करते हैं। उदाहरण के लिए, विज़ुअल सी 10.0 में, एफवाइड फ़ंक्शन (स्ट्रीम के ओरिएंटेशन को सेट करने के लिए उपयोग किया जाता है) को लागू नहीं किया गया है। इसलिए, विज़ुअल सी में, कॉउट और डब्ल्यूकाउट को मिलाने की अनुमति है। ::ios::sync_with_stdio(झूठा); कार्यक्रम की शुरुआत में।
हालांकि, यह ध्यान रखना महत्वपूर्ण है कि ये नियम के अपवाद हैं। सामान्य तौर पर, एक ही प्रोग्राम में विस्तृत और संकीर्ण आउटपुट स्ट्रीम को मिश्रित करने की अनुशंसा नहीं की जाती है, क्योंकि इससे अप्रत्याशित व्यवहार या अपरिभाषित परिणाम हो सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3