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

新手上路,请多包涵

我将我的结构定义为:

 struct taxPayer{
  char name[25];
  long int socialSecNum;
  float taxRate;
  float income;
  float taxes;
};

我的主要功能包含:

 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;

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

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

原文由 Zack Sloan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

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

std::strncpy(citizen1.name,"Tim McGuiness", sizeof(taxPayer::name));

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

 struct taxPayer
{
    std::string name;
    // the rest
};

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

citizen1.name = "Tim McGuiness";

原文由 vsoftco 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题