我不是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.message
和hello
具有相同的数据类型,为什么它不起作用?
答案 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.message
和hello
具有相同的数据类型,为什么它不起作用?
因为标准是这样说的。无法分配数组,仅初始化。
答案 2 :(得分:3)
声明char hello[4096];
为4096个字符分配堆栈空间,从0
索引到4095
。
因此,hello[4096]
无效。
答案 3 :(得分:3)
您需要使用memcpy来复制数组。