C ++数组分配错误:无效的数组赋值

时间:2010-11-07 17:07:33

标签: c++ c arrays

我不是C ++程序员,所以我需要一些数组帮助。 我需要为某些结构分配一个字符数组,例如

struct myStructure {
  char message[4096];
};

string myStr = "hello"; // I need to create {'h', 'e', 'l', 'l', 'o'}

char hello[4096];
hello[4096] = 0;
memcpy(hello, myStr.c_str(), myStr.size());

myStructure mStr;
mStr.message = hello;

我得到error: invalid array assignment

如果mStr.messagehello具有相同的数据类型,为什么它不起作用?

4 个答案:

答案 0 :(得分:17)

因为你不能分配给数组 - 它们不是可修改的l值。使用strcpy:

#include <string>

struct myStructure
{
    char message[4096];
};

int main()
{
    std::string myStr = "hello"; // I need to create {'h', 'e', 'l', 'l', 'o'}
    myStructure mStr;
    strcpy(mStr.message, myStr.c_str());
    return 0;
}

正如Kedar已经指出的那样,你也在写下阵列的末尾。

答案 1 :(得分:14)

  

如果mStr.messagehello具有相同的数据类型,为什么它不起作用?

因为标准是这样说的。无法分配数组,仅初始化。

答案 2 :(得分:3)

声明char hello[4096];为4096个字符分配堆栈空间,从0索引到4095。 因此,hello[4096]无效。

答案 3 :(得分:3)

您需要使用memcpy来复制数组。