ATOI |
Alpha à entier |
---|---|
Langage C++ | cstdlib (stdlib.h) |
Syntaxe
int atoi(const char *str); |
Paramètres
Nom | Description |
---|---|
str | Ce paramètre permet d'indiquer la chaîne de caractères à convertir |
Description
Cette fonction convertie une chaîne de caractères en une valeur entière «int».
Remarques
- La fonction atoi() convertit la chaîne de caractères pointée par str en une valeur de type de données int. La chaîne de caractères doit contenir un nombre entier valide. Si ce n'est pas le cas, la valeur renvoyée n'est pas définie; cependant, la plupart des mises en oeuvre de compilateur renverront zéro.
- Le nombre peut se terminer par n'importe quel caractère ne pouvant pas faire partie d'un nombre entier. Cette situation inclut les espaces blancs, la ponctuation et les caractères. Cela signifie que si atoi() est appelé avec "123.23", la valeur entière 123 sera renvoyée et le ".23" est ignoré.
- Définition et utilité : La fonction atoi (ASCII to integer) est utilisée pour convertir une chaîne de caractères (const char*) représentant un nombre entier en un entier de type int. Elle fait partie de la bibliothèque standard C++ et est définie dans l'entête <cstdlib>. Cette fonction est couramment utilisée pour analyser des entrées de type texte (comme des entrées utilisateur ou des données de fichiers) et les convertir en entiers.
- Comportement avec des entrées invalide : Si la chaîne de caractères ne peut pas être interprétée comme un nombre entier valide, la fonction retourne 0. Cela peut se produire dans des cas comme une chaîne de caractères vide, une chaîne de caractères contenant des caractères non numériques, ou une chaîne de caractères ne représentant pas un entier valide. Par exemple :
- Gestion des espaces et symboles : La fonction atoi ignore les espaces blancs initiaux dans la chaîne de caractères. Elle traite également les signes + et - pour les nombres négatifs et positifs respectivement. Par exemple :
- Limitation dans la gestion des erreurs : Un des principaux inconvénients de atoi est qu'elle ne fournit aucune information sur la raison pour laquelle la conversion a échoué. Si la conversion échoue (par exemple, si la chaîne contient des caractères non numériques), atoi retournera simplement 0, ce qui peut rendre difficile la gestion des erreurs de manière précise. Pour une gestion plus robuste des erreurs, il est recommandé d'utiliser des alternatives comme strtol.
- Comportement avec des nombres très grands ou très petits : Lorsque la chaîne de caractères représente un nombre trop grand pour être représenté dans le type int, ou un nombre trop petit, atoi renverra généralement 0, car elle ne gère pas les dépassements de capacité de manière explicite. Cela peut conduire à des comportements inattendus dans des programmes où la validité des nombres est cruciale.
- Précision et risque d'erreur : Comme atoi convertit uniquement des chaînes de caractères représentant des entiers (de type int), elle n'effectue pas de validation pour s'assurer que le nombre est dans un intervalle valide pour le type int. En cas de dépassement de capacité ou de chaîne incorrecte, le résultat peut être incorrect ou indéfini, ce qui peut poser problème si le programme repose sur des valeurs numériques précises.
- Alternatives plus sûres : Bien que atoi soit une fonction simple, elle est généralement déconseillée dans des programmes plus complexes en raison de son manque de gestion des erreurs. Des alternatives comme strtol (permettant de spécifier une base de conversion et fournit des indicateurs d'erreur) ou std::stoi (en C++11 et versions ultérieures) sont recommandées pour une conversion plus sûre et robuste. Ces fonctions permettent de détecter les erreurs de conversion et offrent plus de flexibilité.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

on obtiendra le résultat suivant :
atoi('12')=12atoi('-7')=-7
Voir également
Langage de programmation - C - Référence de procédures et fonctions - atoi
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 34.
Dernière mise à jour : Lundi, le 3 août 2015