ATOL |
Alpha à entier long |
---|---|
Langage C++ | cstdlib (stdlib.h) |
Syntaxe
long atol(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 «long».
Remarques
- La fonction atol() convertit la chaîne de caractères pointée par str en une valeur de type de données long. La chaîne de caractères doit contenir un nombre entier long valide. Si ce n'est pas le cas, la valeur renvoyée n'est pas définie; cependant, la plupart des mise en oeuvres 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 la fonction atol() est appelé avec "123.23", la valeur entière long 123L sera retournée et le ".23" est ignoré.
- Définition et utilité : La fonction atol (ASCII to long) est utilisée pour convertir une chaîne de caractères représentant un nombre entier en un entier de type long. Elle fait partie de la bibliothèque standard C++ et est définie dans l'entête <cstdlib>. Elle est souvent utilisée pour analyser des données textuelles et les convertir en valeurs entières, notamment dans les programmes traitant des entrées d'utilisateurs ou des données lues dans des fichiers.
- Comportement avec des entrées invalide : Si la chaîne de caractères ne peut pas être convertie en un nombre valide, atol renverra la valeur 0. Cela peut se produire si la chaîne de caractères contient des caractères non numériques ou si la chaîne est vide. Par exemple, atol("abc") renverra 0. Cependant, contrairement à d'autres fonctions comme strtol, atol ne fournit aucune indication sur l'échec de la conversion, rendant la gestion des erreurs difficile.
- Gestion des espaces et des signes : La fonction atol ignore les espaces blancs au début de la chaîne et accepte les signes + ou -. Si la chaîne de caractères représente un nombre négatif ou positif, ce signe sera pris en compte dans la conversion. Par exemple, pour la chaîne "-123", atol renverra -123, et pour " 456", elle renverra 456.
- Limites de l'intervalle de valeurs : La fonction atol convertit les chaînes de caractères en un entier de type long. Cependant, comme pour d'autres fonctions de conversion, si le nombre dans la chaîne de caractères dépasse la capacité du type long de l'implémentation du compilateur, le comportement est indéfini. Sur certaines plateformes, un dépassement peut être interprété comme une valeur de 0 ou un comportement erroné.
- Pas de gestion des erreurs détaillée : Un des principaux inconvénients de atol est qu'elle ne fournit aucune information explicite si la conversion échoue. Par exemple, elle renverra simplement 0 si la chaîne ne contient pas de valeur numérique valide, sans indiquer si l'échec était dû à un format incorrect ou à un autre problème. C'est pourquoi dans des programmes nécessitant une gestion fine des erreurs, atol est souvent remplacée par des alternatives plus robustes comme strtol.
- Différences avec atoi : Tout comme la fonction atoi, atol peut être utilisée pour convertir des chaînes de caractères en entiers, mais elle diffère par le type de valeur retournée. Tandis que atoi renvoie un int, atol renvoie un long, ce qui permet de traiter des nombres plus grands (en fonction de la plateforme et du compilateur). Cela peut être utile si vous devez travailler avec des entiers qui dépassent la capacité d'un int sur votre système.
- Alternatives plus sûres : Bien que atol soit une fonction simple et largement utilisée, elle manque de la robustesse nécessaire pour des applications plus complexes, en raison de son absence de gestion explicite des erreurs. Pour des conversions plus sûres et une gestion des erreurs plus claire, il est recommandé d'utiliser strtol, offrant des options supplémentaires comme la détection des erreurs de conversion et une meilleure prise en charge des bases numériques (binaire, octal, hexadécimal). De plus, en C++11 et versions ultérieures, la fonction std::stol est une alternative plus moderne, lançant des exceptions pour une gestion des erreurs plus précise.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

on obtiendra le résultat suivant :
atol('12')=12atol('-7')=-7
Voir également
Langage de programmation - C - Référence de procédures et fonctions - atol
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 35.
Dernière mise à jour : Lundi, le 3 août 2015