1 #include <iostream>
2 #include <string.h>
3 using namespace std;
4
5 struct Data
6 {
7 char num[3];
8 char name[3];
9 char type;
10 char age[4];
11
12 Data (const Data& data)
13 {
14 *this = (data); //赋值构造函数调用 重载的等号运算符
15 }
16
17 Data& operator = (const Data& data)
18 {
19 strcpy(num, data.num);
20 strcpy(name, data.name);
21 type = data.type;
22 strcpy(age, data.age);
23 }
24
25 }__attribute__((packed)); //指明这个结构体是紧凑型结构
26
27
28 int main(int argc, char** argv)
29 {
30 string info = "110abc*2013";
31 char* line = strdup(info.c_str()); //strup会在堆上面开辟内存存储字符串,所以必须要delete
32 Data* data = reinterpret_cast<Data*>(line); //指针间的强制转换用 reinterpret_cast<>()来实现
33 Data obj = *data; //调用 复制构造函数
34
35 string name(data->name, sizeof(data->name)); //把char*赋值给string可以指定大小哦
36 cout<<"-----"<<name<<"-------"<<data->name<<endl; //因为data->name的4个字符中没有'\0',所以会一直输出直到遇见'\0'
37
38 string num(obj.num, sizeof(obj.num));
39 cout<<"-----"<<num<<"-------"<<obj.num<<endl;
40
41 delete line;
42 return 0;
43 }