C++ tableau attribuer erreur: invalid tableau d'affectation
Je ne suis pas un programmeur C++, j'ai donc besoin d'un peu d'aide avec les tableaux.
J'ai besoin d'assigner un tableau de caractères à une structure, par exemple
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;
- Je obtenir error: invalid array assignment
Pourquoi ça ne fonctionne pas, si mStr.message
et hello
ont le même type de données?
Vous devez utiliser la fonction strcpy ou la fonction memcpy au lieu de mstr.message = bonjour.
La ligne
La ligne
hello[4096] = 0;
est faux. C'est un passé le dernier élément du tableau. Juste supprimer cette ligne.OriginalL'auteur Alex Ivasyuv | 2010-11-07
Vous devez vous connecter pour publier un commentaire.
Parce que vous ne pouvez pas attribuer à des tableaux -- ils ne sont pas modifiables l-valeurs. Utiliser la fonction strcpy:
Et vous êtes également à l'écriture, à la fin de votre tableau, comme Kedar déjà souligné.
mStr.message
ethello
à Alex du code de de lvalues, parce que les expressions&mStr.message
et&hello
sont valides. (Voir la section 5.3.1 du paragraphe 3 de la norme C++.)Ouais, vous avez raison -- désolé. Il semble que ce que j'aurais dit, c'est qu'myStr.le message n'est pas un modifiable l-valeur.
Vous devez mettre à jour votre réponse!
Intéressant. Quelle est la motivation pour cela? Je ne vois pas un problème avec l'affectation à des tableaux constituant la copie de la mémoire plus de.
OriginalL'auteur Stuart Golodetz
Parce que la norme dit. Les tableaux ne peuvent pas être cédés, seulement initialisé.
OriginalL'auteur fredoverflow
La déclaration
char hello[4096];
affecte l'espace de pile de 4096 caractères, indexée à partir de0
à4095
.Par conséquent,
hello[4096]
est pas valide.OriginalL'auteur
Vous devez utiliser memcpy pour copier des tableaux.
OriginalL'auteur Puppy