我试图将成员从一个结构复制到另一个结构,但我不知道如何这样做。
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,年龄,平衡。
有人可以引导我走上正确的道路。任何帮助将不胜感激。
答案 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());