使用指向文件c ++的指针读/写地图

时间:2013-11-01 19:00:19

标签: c++ templates file-io

我正在尝试向/从文件中读取和写入std :: map对象。地图类型是

map<string, Node*>

我已成功将其写入文件但未成功读取。 我不确定我是否正确存储它我认为这是因为我在地图中有指针(节点*),但我不确定。我怎么能用它包含的所有对象完全写出整个地图,然后完美地读回来。我当前的读/写方法是

template<typename T>
T ReadObject(string path) {
    T num;
    ifstream infile;
    infile.open(path, ios::in|ios::binary);
    infile.read(reinterpret_cast<char *>(&num),sizeof(T));
        infile.close();
    return num;
}

template<typename T>
void WriteObject(string path, T& num) {
       ofstream outfile;
       outfile.open (path, ios::out|ios::binary);
       outfile.write(reinterpret_cast<char *>(&num),sizeof(T));
       outfile.close();
}

btw这些在读写整数时起作用

1 个答案:

答案 0 :(得分:3)

指针只是内存地址。您指向的数据永远不会被放入文件中。

在保存对象时,您需要使用您对对象内部结构的了解。按位复制是不够的。