C ++: insère char dans une chaîne
alors j'essaie d'insérer le caractère, que j'ai obtenu à partir d'une chaîne à une autre chaîne.
Ici, j'ai mes actions:
1. Je veux utiliser simple:
someString.insert(somePosition, myChar);
2. J'ai eu une erreur, parce que l'insert(dans mon cas) char* ou chaîne
3. Je suis la conversion de char à char* via stringstream:
stringstream conversion;
char* myCharInsert;
conversion << myChar //That is actually someAnotherString.at(someOtherPosition) if that matters;
conversion >> myCharInsert;
someString.insert(somePosition, myCharInsert);
4. Tout semble aller pour le compiler avec succès, mais le programme plante le reçoit à
conversion >> myCharInsert;
ligne.
5.Je suis en train de remplacer char* string:
stringstream conversion;
char* myCharInsert;
conversion << myChar //That is actually someAnotherString.at(someOtherPosition) if that matters;
conversion >> myCharInsert;
someString.insert(somePosition, myCharInsert);
Tout semble OK, mais quand someAnotherString.at(someOtherPosition)
devient l'espace, le programme se bloque.
Alors, comment dois-je faire correctement?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Il y a un certain nombre de surcharges de
std::string::insert
. La surcharge pour l'insertion d'un seul personnage réellement a trois paramètres:Le deuxième paramètre,
n
est le nombre de fois afin d'insérerc
dans la chaîne de caractères à la positionpos
(c'est à dire, le nombre de répétitions du caractère. Si vous ne souhaitez insérer une instance du personnage, il suffit de le passer, par exemple,Plus simple est de fournir vous-même avec une fonction qui transforme un caractère dans une chaîne. Il y a beaucoup de façons de le faire, comme
Alors vous pouvez simplement dire:
et utiliser la fonction dans d'autres cas où vous voulez une chaîne mais un char.
Le problème, c'est que vous essayez de déréférencement(accès)
myCharInsert
(déclaré comme unchar*
) qui pointe vers un endroit aléatoire dans la mémoire(qui peuvent ne pas être à l'intérieur de l'adresse de l'utilisateur de l'espace) et le faire est un Comportement Indéfini (crash sur la plupart des implémentations).MODIFIER
Pour insérer un
char
dans une chaîne de caractères utilisezstring& insert ( size_t pos1, size_t n, char c );
surcharge.Supplémentaire
Pour convertir
char
dans unstd::string
lire cette réponse