C++ - Comment faire pour ajouter un char à char*?
J'ai essayé jusqu'à bien des égards sur l'Internet pour ajouter un caractère à un char*, mais aucun d'eux ne semble fonctionner. Voici un de mes incomplète solution:
char* appendCharToCharArray(char * array, char a)
{
char* ret = "";
if (array!="")
{
char * ret = new char[strlen(array) + 1 + 1]; //+ 1 char + 1 for null;
strcpy(ret,array);
}
else
{
ret = new char[2];
strcpy(ret,array);
}
ret[strlen(array)] = a; //(1)
ret[strlen(array)+1] = 'char* appendCharToCharArray(char * array, char a)
{
char* ret = "";
if (array!="")
{
char * ret = new char[strlen(array) + 1 + 1]; //+ 1 char + 1 for null;
strcpy(ret,array);
}
else
{
ret = new char[2];
strcpy(ret,array);
}
ret[strlen(array)] = a; //(1)
ret[strlen(array)+1] = '\0';
return ret;
}
';
return ret;
}
Cela ne fonctionne que lorsque le tableau transmis est "" (vide à l'intérieur). Sinon, il n'aide pas (et il a eu une erreur lors de la (1)). Pourriez-vous les gars merci de m'aider avec cela ? Merci beaucoup avancé !
Vous ne pouvez pas ajouter un
char
à un char*
; ils sont de deux types très différents. Vous pouvez ajouter un char
à la array un char*
points.OriginalL'auteur sonlexqt | 2013-11-10
Vous devez vous connecter pour publier un commentaire.
Supprimer ces
char * ret
déclarations à l'intérieur deif
blocs qui se cache externeret
. À cet effet, vous avez la mémoire de la fuite et de l'autre côté de l'onu, la mémoire allouée pourret
.De comparer un style c chaîne de caractères, vous devez utiliser
strcmp(array,"")
pasarray!=""
. Votre code final devrait ressembler à ci-dessous:Notez que vous devez gérer la mémoire allouée retour
ret
quelque part pardelete[]
.Pourquoi vous n'utilisez pas
std::string
? il a.append
méthode pour ajouter un caractère à la fin d'une chaîne:delete[]
le nouveau avais variable si vous n'en avez plus besoin. Ou mieux utiliserstd::string
.OriginalL'auteur deepmax
Le nom de la fonction ne reflète pas la sémantique de la fonction. En fait, vous n'ajoutez pas de caractère. Vous créez un nouveau tableau de caractères qui contient le tableau d'origine, plus le personnage. Donc, si vous avez en effet besoin d'une fonction qui ajoute un caractère à un tableau de caractères, je voudrais l'écrire de la manière suivante
Si vous avez besoin d'une fonction qui contiendra une copie du tableau original, plus le personnage, alors il pourrait ressembler la façon suivante
OriginalL'auteur Vlad from Moscow
Le problème est que vous êtes de déclarer une nouvelle variable au lieu de les affecter à un compte existant:
et d'essayer de comparer les valeurs de chaîne en comparant les pointeurs:
bien qu'il n'y a pas besoin de faire cette comparaison à tous; la première branche va faire la bonne chose ou non si la chaîne est vide.
Le problème plus général est que vous êtes de déconner avec le méchant, le risque d'erreur de type C de manipulation de chaîne en C++. Utilisation
std::string
et il va gérer tout l'allocation de mémoire pour vous:OriginalL'auteur Mike Seymour
De SORTIE:
OriginalL'auteur Safa Seed