我已经看过二进制读取和写入对象的c + +但有一些问题。它“工作”,但另外我得到了错误/“信息”的巨大输出。二进制读/写运行时失败
我所做的是
Person p2;
std::fstream file;
file.open(filename.c_str(), std::ios::in | std::ios::out | std::ios::binary);
file.seekg(0, std::ios::beg);
file.read ((char*)&p2, sizeof(p2));
file.close();
std::cout << "Name: " << p2.name;
人是含string name
和int age
一个简单的结构。当我运行程序时,输出“Name:Bob”,因为我已经创建了一个写入文件的程序(所以对象已经在文件名中)。
除了输出也输出名称:
* glibc的检测*方案:双免费OG腐败(fastttop):***
回溯:
...
存储器映射:
...
中止
不要重新键入代码,它可以引入错误。 __Cut和Paste__代码。对象的二进制读取/写入仅在结构不包含指针时才有效。此规则必须递归应用于所有成员。因此,如果任何成员或成员成员或成员成员是一个指针,这将打破。如果没有关于人的更多信息,很难说它是否真的有效。 – 2010-03-04 13:50:51
向我们展示Person的声明。 – 2010-03-04 13:56:25
请记住,允许编译器在结构,类和联合中的字段之间插入填充。另一个问题是,字符串通常必须为它们分配空间,读入该空间,然后分配给结构,*除非文本字段是固定大小*。 – 2010-03-04 17:27:01