zoukankan      html  css  js  c++  java
  • 从字符串到结构体的直接映射,不需要一一对应的转换!!

     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个字符中没有'',所以会一直输出直到遇见''
    37 
    38     string num(obj.num, sizeof(obj.num));
    39     cout<<"-----"<<num<<"-------"<<obj.num<<endl;
    40 
    41     delete line;
    42     return 0;
    43 }
  • 相关阅读:
    利用for循环 修改精灵图背景位置
    添加列表项 避免浏览器反复渲染 Fragment
    向元素添加属性名和属性值
    分割文本节点
    查询、回显 基本功能
    获取注释
    合并文本节点
    Node(节点)的4个操作方法
    setTimeout与setInterval
    javascript循环
  • 原文地址:https://www.cnblogs.com/silentNight/p/5531026.html
Copyright © 2011-2022 走看看