这是一个c ++代码。我想写一个指向文件中结构的指针。 当我尝试这样做时会产生错误。我做的是>> OBJ1 [0] .contentAdress;在主要。
struct node3{
node3(){
nextContent = NULL;
for (int i = 0; i<1020; i++)
content[i] = '\0';
}
char content[1020];
node3* nextContent;
};
// --------------------------------------------- ----------------------------------------------
struct node1{
node1(){
for (int i = 0; i<496; i++)
fileName[i] = '\0';
}
char fileName[496];
node3* contentAdress;
};
// --------------------------------------------- ----------------------------------------------
int main(){
node1 obj1[2097];
node3 obj3[8192];
ifstream is("file.txt");
//I want the obj1[0].content Address to be written in file. For that I did:
**is >> obj1[0].contentAdress;** *THIS GENERATES AN ERROR*
return 0;
}
错误:
错误C2679:二进制'&gt;&gt;' :找不到哪个操作员需要右手 'node3 *'类型的操作数(或没有可接受的转换)
答案 0 :(得分:3)
将其转换为uint32(或64位系统上的uint64)。但可能不是你想要的,因为如果需要在文件中写入指针的情况很少。
答案 1 :(得分:1)
发生此错误是因为您没有超载&gt;&gt;要与自定义对象一起使用的运算符。操作员无法知道如何从文件中读取数据结构,反之亦然(它不知道如何将其输出到文件中)。
如果要从文件读取数据结构和向文件写入数据结构,可以使用的一个选项是称为序列化的过程,它采用数据结构并将其转换为可以读取/写入文件的符号(粗略地)
http://en.wikipedia.org/wiki/Serialization
“递归序列化嵌套结构”指的是您的数据结构包含指向同一类型的其他实例的指针,从而创建链。您需要以递归方式遍历所有节点,以获取有关数据结构的所有数据,并能够对其进行序列化。
另请注意,仅将指针地址输出到文件是没有用的,因为无法保证下次运行程序时内存空间中的内容。你绝对必须存储数据。
实现此目标的另一种方法是将数据存储为可读文本,例如XML文件。