給定的結構示例:德/序列化對象地圖?
struct SomeName
{
SomeName()
{
}
~SomeName()
{
}
unsigned int Id;
std::string Name;
std::map<unsigned int, unsigned int> Todo;
}
我如何序列化一個std ::向量二進制文件?
我曾嘗試:
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;
}
它的工作原理產生的dat文件,但閱讀它的時候回到它總是失敗,因爲在std ::的地圖裏面它。
我試圖瞭解墜毀的消息是訪問衝突,它使我相信,它不知道如何將文件讀回時初始化地圖來填補呢?或類似的東西,我不明白這一點。
訪問衝突讀取位置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的std :: _樹的std ::分配器>,0>> :: _複製(STD :: _ Tree_nod,性病::分配器>,0>> :: _節點* _Rootnode,性病:: _ Tree_nod,性病::分配器>,0>> :: _節點* _Wherenode)線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