c++ 自定义对象能不能在文件中输入输出

来源:百度知道 编辑:UC知道 时间:2024/06/04 15:34:52
请举一下例子!

你说的应该是对象的串行化和反串行化问题。简单的说就是写一对函数,把所有本对象的属性组织成二进制形式最后写入文件(另一个函数将二进制流解析出来付给变量)。

class A
{
public:
int a;//4字节
int b;//4字节
char c;//1字节
char d;//1字节

char * serialization()
{
static char buff[10];
*(int *)buff = a;
*(int *)(buff + 4) = b;
*(char *)(buff + 8) = c;
*(char *)(buff + 9) = d;
return buff;
}

void deserialization(char * buff)
{
a = *(int *)buff;
b = *(int *)(buff + 4);
c = *(char *)(buff + 8);
d = *(char *)(buff + 9);
}

};

用法:
//头文件自己加上吧
main()
{
A foo;
foo.a = 123;
foo.b = 456;
foo.c = 'a';
foo.d = 'b';
fd = open("../data", O_CREAT|O_RDWR);
write(fd, foo.serialization(), 10);//写入文件

char buff[10];