Comment analyser un entier vers string(char* || char[])
en C? Existe-t-il un équivalent à la méthode Integer.parseInt(String)
de Java en C?
Si vous souhaitez convertir un entier en chaîne, essayez la fonction snprintf()
.
Si vous souhaitez convertir une chaîne en entier, essayez la fonction sscanf()
ou atoi()
ou atol()
.
Pour convertir un int en chaîne:
int x = -5;
char buffer[50];
sprintf( buffer, "%d", x );
Vous pouvez également le faire pour les doubles:
double d = 3.1415;
sprintf( buffer, "%f", d );
Pour convertir une chaîne en entier:
int x = atoi("-43");
Voir http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ pour la documentation de ces fonctions.
Il semble que vous ayez une chaîne et que vous souhaitiez la convertir en entier, à en juger par la mention de parseInt
, mais ce n'est pas tout à fait clair à la question ...
Pour ce faire, utilisez strtol
. Cette fonction est légèrement plus compliquée que atoi
, mais en retour, elle fournit une indication plus claire des conditions d'erreur, car elle peut remplir un pointeur (que l'appelant fournit) avec l'adresse du premier caractère qui l'a confondu. . L'appelant peut alors examiner le caractère incriminé et décider si la chaîne était valide ou non. atoi
, en revanche, ne renvoie que 0 s'il s'est perdu, ce qui n'est pas toujours utile - bien que si vous êtes satisfait de ce comportement, vous pourriez aussi bien l'utiliser.
Un exemple d'utilisation de strtol
suit. La vérification de l'erreur est très simple: si le premier caractère non reconnu n'était pas le '\x0'
qui termine la chaîne, la chaîne est alors considérée comme ne contenant pas un entier valide.
int ParseInt(const char *s,int *i)
{
char *ep;
long l;
l=strtol(s,&ep,0);
if(*ep!=0)
return 0;
*i=(int)l;
return 1;
}
Cette fonction remplit * i avec l'entier et retourne 1, si la chaîne contenait un entier valide. Sinon, il renvoie 0.
C'est discuté dans la FAQ C de Steve Summit.
La fonction Java parseInt()
analyse une chaîne pour renvoyer un entier. Une fonction C équivalente est atoi()
. Cependant, cela ne semble pas correspondre à la première partie de votre question. Voulez-vous convertir un entier en une chaîne ou une chaîne en un entier?
Vous pouvez également consulter la fonction atoi()
(ascii en entier) et ses parents, atol
et atoll
, etc.
Il existe également des fonctions qui font l'inverse, à savoir itoa()
et co.
Vous voudrez peut-être jeter un œil à la solution compatible sur ce site .
Tu peux essayer:
int intval;
String stringval;
//assign a value to intval here.
stringval = String(intval);
cela devrait faire l'affaire.