Ошибка присвоения массива С++: недопустимое назначение массива
Я не программист на С++, поэтому мне нужна помощь с массивами.
Мне нужно назначить массив символов для некоторой структуры, например.
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
имеют один и тот же тип данных?
Ответы
Ответ 1
Поскольку вы не можете назначить массивы - это не изменяемые значения 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;
}
И вы также записываете конец своего массива, как уже указывал Кедар.
Ответ 2
Почему это не работает, если mStr.message
и hello
имеют один и тот же тип данных?
Потому что стандарт говорит так. Массивы не могут быть назначены, только инициализированы.
Ответ 3
Объявление char hello[4096];
назначает пространство стека для 4096 символов, индексируется от 0
до 4095
.
Следовательно, hello[4096]
недействителен.
Ответ 4
Вам нужно использовать memcpy для копирования массивов.