Je voudrais utiliser ma fonction pour créer une matrice de chaîne, mais que la déclaration de ma ficelle ne fonctionne pas.
3 Réponses :
Tout d'abord, votre fonction est déclarée pour renvoyer un single em> Et vous ne pouvez pas réellement retourner des tableaux simples des fonctions. Les matrices se décomposent aux pointeurs vers leur premier élément et que le pointeur deviendrait invalide immédiatement à mesure que la durée de vie de la matrice se termine lorsque la fonction renvoie. P>
Il existe quelques solutions: transmettez le tableau (comme un pointeur sur le premier élément) comme argument de la fonction. Ou retour par exemple std :: string code> objet. Deuxièmement, vous retournerez
tableau [12] code> qui est élément treize em> de votre tableau de douze éléments. P>
std :: Array code>
objet. p>
Votre problème est que vous avez la mauvaise syntaxe de ce que vous faites et que certaines d'entre elles ne sont pas possibles. Malheureusement, aucun des causes d'une erreur de compilation, cela ne fait que quelque chose d'autre, y compris un comportement non défini.
Vous devez déclarer la fonction comme ceci: p> Vous pouvez 'T Renvoie un tableau, mais si vous l'enveloppez dans un puis faites-le à l'intérieur: P> std :: Array code>, vous pouvez. p>
int main() {
std::array<std::string, 12> array = input();
for (std::string s : array) {
std::cout << s << std::endl;
}
return 0;
}
Merci à vous tous pour l'aide. Je l'obtiens, c'est propre maintenant.
Array [12] code> est éteint la fin de votre matrice, et même si c'était dans les limites, ce serait une chaîne em>, pas une collection de chaînes. Les tableaux de style C ne sont pas assignables.
std :: vecteur
std :: array
for (int i = 0; i < 12; i++)
{
result[i] = std::string(months[i], '-');
}
Merci pour votre réponse. Je comprends. Nettoie maintenant.