表达式必须是可修改的左值(字符数组)

Zac*_*oan 5 c++ struct lvalue

我将结构定义为:

struct taxPayer{
  char name[25];
  long int socialSecNum;
  float taxRate;
  float income;
  float taxes; 
};
Run Code Online (Sandbox Code Playgroud)

我的主要功能包括:

taxPayer citizen1, citizen2;

citizen1.name = "Tim McGuiness";
citizen1.socialSecNum = 255871234;
citizen1.taxRate = 0.35;

citizen2.name = "John Kane";
citizen2.socialSecNum = 278990582;
citizen2.taxRate = 0.29;
Run Code Online (Sandbox Code Playgroud)

编译给我一个错误(C3863 数组类型char[25]不可分配,表达式必须是一个可修改的左值) oncitizen1.name = "Tim McGuiness";以及 oncitzen2.name = "John Kane";

如何删除此错误并设置citizen1.name为一个名称和citizen2.name一个不同的名称?

vso*_*tco 5

您不能分配给数组。您可以做的是使用 astd::string或 use std::strcpy/std::strncpy,例如

std::strncpy(citizen1.name,"Tim McGuiness", sizeof(taxPayer::name));
Run Code Online (Sandbox Code Playgroud)

由于您使用 C++,我建议您使用std::string,

struct taxPayer
{
    std::string name;
    // the rest
};
Run Code Online (Sandbox Code Playgroud)

然后您可以像在代码中一样简单地分配给它

citizen1.name = "Tim McGuiness";
Run Code Online (Sandbox Code Playgroud)