का उपयोग कर विंडोज के तहत यूनिकोड फ़ाइल नाम के साथ फ़ाइल के साथ fstream खोलना मुझे फ़ाइल नाम "यूनिकोड" फ़ाइल नाम होने पर std :: fstream (या वास्तव में कोई अन्य std :: ostream) के रूप में फ़ाइल खोलने की आवश्यकता है।गैर-एमएसवीसी कंपाइलर
एमएसवीसी के तहत मेरे पास गैर-मानक एक्सटेंशन std::fstream::open(wchar_t const *,...)
है? जीसीसी (सबसे महत्वपूर्ण) और शायद बोर्लैंड कंपाइलर जैसे अन्य कंपाइलर्स के साथ मैं क्या कर सकता हूं।
मुझे पता है कि CRTL _wfopen
प्रदान करता है, लेकिन यह सी कब-धाराओं के बजाय FILE *
इंटरफ़ेस देता है, हो सकता है कि वहाँ एक गैर मानक तरीका FILE *
से कब-स्ट्रीम बनाने के लिए है? क्या MSV के साथ विंडोज़ के विस्तार के साथ कोई boost::ifstream
है?
आप नहीं कर सकते। मैक ओएस एक्स पर यह निर्णय लिया गया था कि POSIX फ़ाइल एपीआई - और इसलिए std :: fstream - सभी utf-8 ले लेंगे। ऐसे वातावरण में जहां प्लेटफ़ॉर्म विशिष्ट सीमाएं नहीं हैं (जैसे कि विंडोज़ पर जीसीसी और बीसी (वास्तव में, उनके पास अपने स्वयं के एक्सटेंशन हो सकते हैं, लेकिन यह पीओएसईक्स मानक के बाहर होगा)) सी और सी ++ रनटाइम फ़ंक्शंस को विश्वसनीय रूप से उम्मीद नहीं की जा सकती है फाइल सिस्टम को उन फ़ाइलों को एक्सेस करें जिनके नाम में गैर एएससीआई वर्ण हैं। –
@ क्रिस मुझे पुस्तकालय के साथ कोई समस्या नहीं है जो यूटीएफ -8 का समर्थन करता है - यह मेरे लिए सही है। मुद्दा यह है कि विंडोज यूटीएफ -8 – Artyom
का समर्थन नहीं करता है, मिनीजीडब्लू के लिए हैकिश वर्कअराउंड http://stackoverflow.com/questions/6524821/opening-stream-via-function – marcin