从字符串到结构体的直接映射,不需要一一对应的转换!!
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 }