我想可能本意是“持久化”问题中的,深拷贝持久化。
能做到深拷贝就达到目的了。
c++ 代码:
#include <iostream>
#include <fstream>
#include <string>
struct item{
item(const char* x, item* n=0):data(x),next(n){ }
item(const item& i):data(i.data),next(i.next){ }
~item(){ delete next; }
std::string data;
item* next;
};
void print_list(item* li){
if(li){
std::cout<<li->data<<"==>";
print_list(li->next);
}
else
std::cout<<"null\n";
}
void save_list(item* li){
std::ofstream f("foo.dat");
while(li){
f<<li->data<<",";
li=li->next;
}
}
item* load_item(std::ifstream& f){
item* x=0;
char c;
while(f.get(c) && c!=','){
if(!x)
x=new item("");
x->data+=c;
}
if(c==',')
x->next=load_item(f);
return x;
}
item* load_list(){
std::ifstream f("foo.dat");
return load_item(f);
}
int main(int, char**){
item* li=new item("hello", new item("world", new item("?", new item("foo"))));
print_list(li);
save_list(li);
delete li;
li=load_list();
print_list(li);
delete li;
}
程序运行:
liuuuxin@WEIFANG ~/temp
$ g++ test.cpp -o test
liuuuxin@WEIFANG ~/temp
$ ./test
hello==>world==>?==>foo==>null
hello==>world==>?==>foo==>null