2010-05-19 15 views
8

के लिए open_memstream के समतुल्य मैं अपनी लाइब्रेरी में open_memstream का उपयोग कर रहा हूं, लेकिन मैं इस पुस्तकालय को एमएसवीसी में पोर्ट करना चाहता हूं। ऐसा लगता है कि कोई समकक्ष कार्य उपलब्ध नहीं है, लेकिन क्या कुछ ऐसा ही है?एमएसवीसी

क्या open_memstream करता है यह एक चार ** गंतव्य और आकार लेता है और एक फ़ाइल * जो आप के लिए कई लिखने, डेटा एक गतिशील आवंटित बफर (चार ** तर्क से पहुँच योग्य) में संग्रहीत किया जाता देता है। FILE को बंद करते समय char ** में डेटा होता है जो स्ट्रीम में लिखा गया था। यह बड़ी और जटिल स्ट्रिंग धाराओं का निर्माण करने का एक आसान तरीका बनाता है।

हालांकि दोनों को याद रखना और memstream से खोजना संभव है, मैं केवल इसे लिखता हूं।

क्या एमएसवीसी में एक समान स्मृति फ़ाइल स्ट्रीम खोलने का कोई तरीका है? इसके अलावा, यह शुद्ध सी है, कोई सी ++ नहीं है।

+0

मैंने किया नोटिस बीएसडी एक समारोह funopen कहा जाता है जो आप कॉलबैक की स्थापना करके एक कस्टम स्ट्रीम बनाने के लिए अनुमति देता है, हो सकता है वहाँ MSVC के लिए कुछ इसी तरह है गया है? – ext

उत्तर

2

विंडोज पर एक समान फ़ंक्शन CreateStreamOnHGlobal() होगा। हालांकि यह आईएसट्रीम COM इंटरफ़ेस के साथ काम करता है, यह FILE के लिए ड्रॉप-इन प्रतिस्थापन नहीं है। आप सिगविन स्रोत कोड पर एक झलक लेना चाहते हैं ताकि वे यह देख सकें कि उन्होंने क्या किया है।

+0

Cygwin newlib क्रम पुस्तकालय है, जो लागू करता है यह स्वयं के फ़ाइल संरचना है और इस तरह fopencookie (और open_memstream) को लागू करता है उपयोग करने के लिए लगता है। कम से कम यही मुझे स्रोत में मिलता है। – ext

+0

हां, यह असंभव नहीं है। यह जानना फ़ाइल * संदर्भ देता है एक गैर फ़ाइल प्रकार संसाधन होगा। आप तो Cygwin का उपयोग नहीं करना चाहते हैं तो आप थोड़े अपनी स्मृति धारा कोड को बदलने के लिए बर्बाद कर रहे हैं। –

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