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

新手上路,请多包涵

我将我的结构定义为:

 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 许可协议

阅读 957
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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题