2011-06-01 5 views
5


मैं काफी नया प्रयास कर रहा हूं। मुझे किसी ऑब्जेक्ट को क्रमबद्ध करने की आवश्यकता है (उपयोगकर्ता परिभाषित वर्ग का उदाहरण), जिसमें पॉइंटर्स (आंतरिक पेड़, हैंश, आदि), और कुछ मूल प्रकार के गुण होते हैं।उपयोगकर्ता परिभाषित कक्षा सीरियलाइजेशन, सी ++ और msgpack

अब तक मैं कर सकता हूं कि msgstr "msgstr" क्या मैं कक्षा को msgpack::sbuffer पर क्रमबद्ध करता हूं, और फिर बफर को अनसुलझा करने के लिए पढ़ता हूं।

लेकिन अब, मैं उस बफर को फ़ाइल में भेजना चाहता हूं, या धारावाहिक परिणाम फ़ाइल में भेजना और फिर इसे रद्द करना चाहते हैं।
क्या कोई मुझे यह करने के बारे में कुछ सुझाव दे सकता है? मैं ब्राउज़ करें और इसके बारे में थक पाने के लिए :) इस तरह

मेरे कोड नज़र पर्याप्त पढ़ें:

msgpack::sbuffer sbuf; 
msgpack::pack(sbuf, cluster); //cluster is the instance of my class clustering 

//HERE I SHOULD SEND THE BUFFER TO A STREAM FILE, AND THEN LOAD IT IN THE UNPACK; 

msgpack::unpacked msg; 
msgpack::unpack(&msg, sbuf.data(), sbuf.size()); 
msgpack::object obj = msg.get(); 
clustering clustUnser 
obj.convert(&clustUnser); 

धन्यवाद हर कोई!
बेस्ट,
लुचुक्स।

उत्तर

3

उदाहरण यहाँ से:

http://wiki.msgpack.org/pages/viewpage.action?pageId=1081387

यह sbuf.data (तरह दिखता है) पता हो जाएंगे और sbuf.size() आकार वापसी होगी डेटा जो आप के लिए लिखते थे की, द्विआधारी फ़ाइल।

जब आप किसी बाइनरी फ़ाइल से डेटा लोड करना चाहते हैं, तो उसे आवंटित किए गए बफर में पढ़ें और फिर पता और आकार को msgpack :: unpack कॉल पर पास करें।

+0

धन्यवाद! मैं जल्दी में था, इसलिए मैंने अपने स्वयं के क्रमिकरण विधियों को लागू किया। लेकिन मैं जल्द ही वापस आऊंगा, और आपने जो सुझाव दिया है उसे आजमाएं! – Luchux