将结构的成员复制到另一个结构

copying members of structure to another structure

本文关键字:结构 另一个 复制 成员      更新时间:2023-10-16

我正试图将成员从一个结构复制到另一个结构,但我不知道如何做到这一点。

struct StudentTxt
{
    int ID;
    string lname;
    string fname;
    string initial;
    int age;
    double balance;
};
struct StudentBin
{
    int ID;
    int age;
    double balance;
    char fullname[50];
};

我读取文件并将所有数据存储到第一个结构中,然后将lname、fname和initial组合成一个字符串。

问题是,我试图将字符串复制到第二个结构中的全名,以及ID、age、Balance。

有人能指引我走正确的路吗。

任何帮助都将不胜感激。

写一个函数来执行翻译和复制怎么样?

void studentCopy( StudentTxt const * pSrc, StudentBin * pDst ) {
    pDst->ID = pSrc->ID;
    pDst->age= pSrc->age;
    pDst->balance = pSrc->balance;
    string const name = pSrc->fname + pSrc->initial + pSrc->lname;
    size_t const dstLen = sizeof( pDst->fullname );
    strncpy( & pDst->fullname, name.c_str(), dstLen );
    pDst->fullname[ dstLen - 1 ] = 0;    // NUL terminate
}

为什么不能只使用赋值运算符?

// Say these are for the same student
StudentTxt studentATxt;
StudentBin studentABin;
// Copy items over
StudentABin.ID = StudentATxt.ID;
StudentABin.age = StudentATxt.age;
StudentBin.fullname = StudentTxt.fname.c_str()

etc

u只需将全名声明为std::string,然后在转换时写入fullname= lname+ " "+fname+" "+initial;

如果必须使用char数组,则执行以下操作:

           strcat(fullname,lname.c_str());
           strcat(fullname,fname.c_str());
           strcat(fullname,initial.c_str());

在进行上述操作之前,请记住使用fullname[0]=0;初始化全名。您也可以在每次串联后使用strcat(fullname," ");以获得正确的格式。

然后简单地将第一个结构的其他属性复制到第二个结构中。

对于fullname部分:

std::string fullname(
    StudentATxt.lname + " " +
    StudentATxt.fname + " " +
    StudentATxt.initial);
if(fullname.size() < 50)
    strcpy(StudentABin.fullname, fullname.c_str());
相关文章: