मैं बूस्ट सीरियलाइजेशन लाइब्रेरी का उपयोग करके एक स्ट्रिंग में एक वर्ग को क्रमबद्ध करने की कोशिश कर रहा हूं और मेरी कक्षा में शामिल कई डबल सदस्य चर हैं।बूस्ट सीरियलाइजेशन और युगल
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
if (version > 0)
{
ar & mLatitude;
ar & mLongitude;
}
}
जब मैं एक स्ट्रिंग के लिए क्रमानुसार, बढ़ावा नहीं करता है:
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/string.hpp>
std::stringstream ss;
boost::archive::text_oarchive oa(ss);
oa << mPoint;
यहाँ मेरी प्वाइंट वर्ग के भीतर serialiation विधि है:
नीचे मैं क्रमानुसार करने का उपयोग कर रहा है कोड डबल टू स्ट्रिंग रूपांतरण को संभालने के लिए प्रतीत होता है क्योंकि मैं अपेक्षा करता हूं (वहां गोल करने वाले मुद्दे दिखाई देते हैं)। थोड़ा सा शोध करना ऐसा लगता है कि दूसरों ने एक ही व्यवहार की सूचना दी है। मैं एक डबल से एक स्ट्रिंग को परिवर्तित करने के साथ जुड़े परिशुद्धता से संबंधित मुद्दों को भी समझता हूं और इसके विपरीत और यह समस्या का कारण बन सकता है।
अजीब क्या है और मुझे समझ में नहीं आता है, हालांकि ऐसा लगता है कि जब मैं स्ट्रिंगस्ट्रीम का उपयोग कर रहा हूं और डबल को स्ट्रीम पर रीडायरेक्ट कर रहा हूं और न ही जब मैं स्ट्रिंगस्ट्रीम से कन्वर्ट करने के लिए बूस्ट के लेक्सिकल_कास्ट फ़ंक्शन का उपयोग करता हूं। str() एक डबल पर वापस। बूस्ट की खोज करने से पहले अपने स्वयं के क्रमिकरण/deserialization वर्ग था, मैंने वास्तव में स्ट्रिंगस्ट्रीम और lexical_cast कॉल का उपयोग कर अपना खुद लिखा था और यह w/o मुद्दा काम किया। मैं वास्तव में उम्मीद कर रहा हूं कि मुझे क्रमबद्धता लाइब्रेरी को त्यागना नहीं है और मेरे पास पहले जो कुछ था, उस पर वापस जाना है। उम्मीद है कि बस कुछ सेटिंग/विशेषता/आदि है। मुझे याद आ रही है।
स्पष्ट और मूर्ख सुझाव नहीं स्ट्रिंग के रूप में, एक बाइनरी डेटा के रूप में यह क्रमानुसार करने हो सकता है? शायद यह समाधान है? दोबारा अगर यह इतना आसान था कि आप शायद पहले से ही ऐसा करेंगे ... :) अगर मैं उत्तर के बिना लंबे समय तक नहीं था और समाधान खोजने के लिए मेरी जिज्ञासा नहीं करता तो मैं अपनी सलाह नहीं दे रहा। :) – NoSenseEtAl
बूस्ट के लेक्सिकल_कास्ट में उचित तर्क को सटीक रूप से सेट करने के लिए जटिल तर्क है - देखें http://www.boost.org/doc/libs/1_46_1/boost/detail/lcast_precision.hpp –
क्या आप मानों का उदाहरण दे सकते हैं क्या करें और सही ढंग से गोल-यात्रा न करें? –