memcpy可以将结构体拷贝到字符数组中,但直接从字符数组中是不能取出想要的结果的。因为结构体中数据类型和字符类型是不一致的,
如果真要取出数据内容,有两种方法:1.再次使用memcpy进行解析 2.强制类型转换.
例如:1
struct aaa {
int a;
int b;
}aa,bb;
char buffer[20];
aa.a=20;aa.b=30;
memcpy(buffer,&aa,sizeof(aaa)); //一般是作为发送方的处理方式
memcpy(&bb,buffer,sizeof(aaa)); // 一般是作为接受方的处理方式
cout<<bb.a<<bb.b<<endl;
例如:2
memcpy(buffer,&aa,sizeof(aaa));
aaa *new = (aaa *)buffer;
cout<<new->a<<new->b<<endl;
同样,memcpy也可以将结构体数据拷贝到字符中,采用上述方式即可取出字符数组中的内容
aaa bb[2],aa[2];
memset(aa, 0, sizeof(bbb)*2);
memset(bb, 0, sizeof(bbb)*2);
char arr[20];
aa[0].a=40;
aa[0].b=50;
aa[1].a = 100;
aa[1].b = 200;
memcpy(arr,aa,sizeof(bbb)*2);
//bbb *cc = (bbb *)arr;
memcpy(bb, arr, sizeof(bbb)*2);
cout<<bb[0].a<<bb[0].b<<bb[1].a<<bb[1].b<<endl;//可以证明输出结果分别是:40,50,100,200