में अदालत और wcout मिश्रण मैं "सी ++ कुकबुक" जो निम्नलिखित स्निपेट था पढ़ रहा था:एक ही कार्यक्रम
// cout << s << std::endl; // You shouldn't be able to
wcout << ws << std::endl; // run these at the same time
आप वास्तविक उदाहरण देखने में रुचि रखते हैं, तो यहां a link to the page on Google books है।
इसके अलावा, मुझे यह SO question मिला जो ऐसा लगता है कि wcout और cout मिश्रण ठीक है। क्या कोई मुझे बता सकता है कि यह टिप्पणी किस बारे में बात कर रही है?
संपादित
सी ++ स्टैंडर्ड से [27.4.1]:
इसी व्यापक और संकीर्ण चरित्र पर कार्रवाई मिश्रण धाराओं, फाइलों पर इस तरह के आपरेशनों मिश्रण के रूप में निर्दिष्ट के रूप में ही अर्थ विज्ञान इस प्रकार है आईएसओ सी मानक के संशोधन 1 में।
सी स्टैंडर्ड [7.19.2] से:
प्रत्येक धारा एक ओरिएंटेशन है। किसी बाहरी ऑपरेशन से स्ट्रीम होने के बाद, लेकिन पर किसी भी ऑपरेशन किए जाने से पहले, स्ट्रीम उन्मुखीकरण के बिना होती है। एक बार विस्तृत चरित्र इनपुट/आउटपुट फ़ंक्शन को उन्मुखीकरण के बिना स्ट्रीम पर लागू किया गया है, स्ट्रीम एक विस्तृत उन्मुख स्ट्रीम बन जाती है। इसी तरह, एक बार बाइट इनपुट/आउटपुट फ़ंक्शन में को उन्मुखीकरण के बिना स्ट्रीम पर लागू किया गया है, तो स्ट्रीम एक बाइट-ओरिएंटेड स्ट्रीम बन जाती है। केवल फ्रीपेन फ़ंक्शन या फ़ॉवर्ड फ़ंक्शन पर कॉल अन्यथा स्ट्रीम के अभिविन्यास को बदल सकता है। (फ्रीपेन के लिए एक सफल कॉल किसी भी अभिविन्यास को हटा देता है।)
बाइट इनपुट/आउटपुट फ़ंक्शंस एक विस्तृत उन्मुख स्ट्रीम पर लागू नहीं होंगे और विस्तृत वर्ण इनपुट/आउटपुट फ़ंक्शंस बाइट-ओरिएंटेड स्ट्रीम पर लागू नहीं होंगे।
तो, मानक ऐसा लगता है कि आपको उन्हें मिश्रण नहीं करना चाहिए।
विजुअल C++ 10.0 fwide समारोह के लिए लागू नहीं किया गया जा रहा है के रूप में दर्ज है: हालांकि, मैं इस उद्धरण from this article पाया। और एक व्यावहारिक दृष्टिकोण से, कम से कम पूरी लाइनों को आउटपुट करने के स्तर पर यह स्पष्ट रूप से cout और wcout के उपयोग को जोड़ने के लिए ठीक काम करता है। तो, खुशी से, दृश्य सी ++ स्पष्ट रूप से मानक की आवश्यकताओं को नजरअंदाज करता है और एक अव्यवहारिक स्पष्ट सी फ़ाइल स्ट्रीम अभिविन्यास को बनाए रखता नहीं है।
और यह भी, जीसीसी के विषय में मैं here से इस उद्धरण पाया:
यह एक (नया) सुविधा, नहीं एक बग, देख libstdC++/11705 और सामान्य खोज में धारा उन्मुखीकरण के बारे में है सी मानक (सी 99, 7.1 9.2)। संक्षेप में आप बाइट उन्मुख और विस्तृत उन्मुख I/O मिश्रण नहीं कर सकते हैं। अभी के लिए, बग libstdC++/11705 में इंगित किया गया है, तो आप std :: ios :: sync_with_stdio (false) को कॉल करके अपने अपेक्षाओं के करीब कुछ प्राप्त कर सकते हैं; की शुरुआत में आपका प्रोग्राम।
मैंने वास्तव में पुस्तक के इरेटा पेज की जांच की क्योंकि मैंने सोचा कि यह एक गलती हो सकती है, लेकिन कुछ भी नहीं मिला। –
@ जेसे: लेखक से संपर्क करने का समय, शायद। –
क्या आप समझ सकते हैं कि आपका क्या मतलब है और वास्तव में क्या होता है: "वे दोनों STDOUT को मानचित्र करते हैं"? , धन्यवाद –