MSVC

2010-05-19 10 views
8

için Open_memstream eşdeğeri Kitaplıktaki open_memstream kullanıyorum ancak bu kütüphaneyi MSVC'ye bağlamak istiyorum. Eşdeğer bir işlev yok gibi görünüyor, ama yeterince benzer bir şey var mı? yaparMSVC

Ne open_memstream o bir char ** hedef ve boyut alır ve birçok yazma, veri (Char ** argüman erişilebilir) dinamik olarak atanan tampon depolanan bir FILE * döndürür. FILE kapatılırken char **, akışa yazılan verileri içerir. Bu, büyük ve karmaşık dize akışları oluşturmanın kolay bir yoludur.

Hem okunaklı hem de adres çubuğundan arama yapmak mümkün olsa da, sadece yazacağım.

MSVC'de benzer bir bellek FILE akışı açmanın bir yolu var mı? Ayrıca, bu saf C, C++ değil.

+0

BSD'nin geri çağrılar ayarlayarak özel bir akış oluşturmanıza olanak veren funopen adlı bir işlevi olduğunu fark ettim, belki MSVC için benzer bir şey var mı? – ext

cevap

2

Windows'ta benzer bir işlev CreateStreamOnHGlobal() olacaktır. Ancak, IStream COM arayüzü ile çalışır, FILE için bir drop-in yerine geçmez. Ne yaptığını görmek için Cygwin kaynak koduna bir göz atmak isteyebilirsiniz.

+0

Cygwin, kendi dosya yapısını kullanan ve böylece fopencookie (ve open_memstream) uygulayan newlib çalışma zamanı kitaplığını kullanır. En azından kaynakta bulduğum şey bu. – ext

+0

Evet, bu olası değil. FILE * dosyasının dosya dışı bir kaynak olduğunu belirtmesi gerekir. Cygwin'i kullanmak istemezseniz, bellek akışı kodunuzu değiştirmek zorunda kalırsınız. –