J'ai un caractère à partir du clavier, par entier:C++ caractère Append à std :: string de int
int c = getch();
un Je veux l'ajouter à une chaîne que si elle est pas return
:
void somefunction()
{
std::string str = "you pressed: ";
int c;
while (1)
{
c = getch();
if (c == 10) break;
char* ch;
sprintf(ch,"%c",c);
str += std::string(ch);
}
}
cependant, cela crée une erreur de segmentation lorsque le champ d'somefunction
reste. Je geussing que lorsque le dtor pour str
est appelé le pointeur vers ch
n'est plus disponible.
Comment puis-je y remédier?
Votre problème ici est que le pointeur ch n'est pas initialisé et pourrait pointer n'importe où. – sstn
L'erreur de segmentation se produit parce que vous n'allouez aucune mémoire pour le tableau de caractères 'sprintf'. – jrok
Votre autre problème est que vous mélangez la manipulation de chaînes de style C avec le style C++. Cela peut être fait, bien sûr, mais n'est pas nécessaire et non trivial pour obtenir raison (comme indiqué par sstn). –