Учитывая образец структуры:De/сериализовать объект с картой?
struct SomeName
{
SomeName()
{
}
~SomeName()
{
}
unsigned int Id;
std::string Name;
std::map<unsigned int, unsigned int> Todo;
}
Как я могу сериализовать зЬй :: вектор в двоичный файл?
Я попытался:
bool Save(std::string filename, std::vector<SomeName> &items)
{
std::ofstream fileWrite;
fileWrite.open(filename.c_str(), std::ios::out | std::ios::binary);
if (!fileWrite)
{
std::cout << "Failed to open file for writting...\n";
return false;
}
fileWrite.write(reinterpret_cast<const char*>(&items[0]), items.size()*sizeof(SomeName));
fileWrite.close();
return true;
}
Он работает, чтобы создать файл Дат, но при чтении его обратно он всегда терпит неудачу из-за станд :: Карта внутри него.
Я попытался понять сообщение о сбое, которое является нарушением прав доступа, и это заставляет меня думать, что он не понимает, как инициализировать карту, чтобы заполнить ее при чтении файла обратно? Или что-то похожее на это я не понимал этого больше, чем это.
Нарушение правил доступа для чтения 0xfeeeff03.
Указывая обратно // <<< THIS LINE
:
_Nodeptr _Copy(_Nodeptr _Rootnode, _Nodeptr _Wherenode)
{ // copy entire subtree, recursively
_Nodeptr _Newroot = _Myhead; // point at nil node
if (!_Isnil(_Rootnode)) // <<< THIS LINE
{ // copy a node, then any subtrees
_Nodeptr _Pnode = _Buynode(_Myhead, _Wherenode, _Myhead,
SerializationCpp.exe станд :: _ Tree, станд :: Распределитель> 0>> :: _ Copy (станд :: _ Tree_nod, станд :: распределитель> 0>> :: _ Node * _Rootnode, станд :: _ Tree_nod, станд :: распределитель> 0>> :: _ Node * _Wherenode) Line 1078 + 0xc байт C++
Вот как я прочитал назад:
bool Load(std::string filename, std::vector<SomeName> &items)
{
items.clear();
std::ifstream file;
file.open(filename.c_str(), std::ios::in | std::ios::binary);
if (!file)
{
std::cout << "Failed to open file for reading...\n";
return false;
}
SomeName temp;
while (file.read(reinterpret_cast<char*>(&temp), sizeof temp))
{
items.push_back(temp);
}
file.close();
return true;
}
В резюме, как мне сериализовать/десериализовать эту структуру из/в двоичный файл?
очень информативный, я был под впечатлением, что это было возможно, потому что оно работает по назначению без карты. – Guapo