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

时间:2014-04-30 17:51:01

标签: c++ arrays structure

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

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,年龄,平衡。

有人可以引导我走上正确的道路。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

如何编写函数来执行翻译和复制?

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
}

答案 1 :(得分:1)

你可以将全名声明为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," ");以获得正确的格式。

然后只需将第一个结构的其他属性复制到第二个结构中。

答案 2 :(得分:1)

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

// 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()

...等

答案 3 :(得分:1)

对于fullname部分:

std::string fullname(
    StudentATxt.lname + " " +
    StudentATxt.fname + " " +
    StudentATxt.initial);

if(fullname.size() < 50)
    strcpy(StudentABin.fullname, fullname.c_str());