Fonctions de valeur chaîne en valeur numérique

Notes

Chaque fonction de la strto* famille convertit une chaîne terminée par null en valeur numérique. Les fonctions disponibles sont listées dans le tableau suivant.

Fonction Description
strtod Convertir une chaîne en valeur à virgule flottante double précision
strtol Convertir une chaîne en entier long
strtoul Convertir une chaîne en entier long non signé
_strtoi64 Convertir une chaîne en entier __int64 64 bits
_strtoui64 Convertir une chaîne en entier __int64 non signé 64 bits

wcstod, wcstol, wcstoul et _wcstoi64 sont, respectivement, des versions à caractères larges de strtod, strtol, strtoul et _strtoi64. L’argument de chaîne de chacune de ces fonctions de caractères larges est une chaîne à caractères larges. Chaque fonction a un comportement identique à celui de son homologue en caractères codés sur un octet.

La strtod fonction prend deux arguments : la première est la chaîne d’entrée et le deuxième pointeur vers le caractère qui met fin au processus de conversion. strtol, strtoul_strtoi64 et _strtoui64 prendre un troisième argument comme base numérique à utiliser dans le processus de conversion.

La chaîne d’entrée est une séquence de caractères qui peut être interprétée comme une valeur numérique du type spécifié. Chaque fonction cesse de lire la chaîne au premier caractère qu’elle ne peut pas reconnaître dans le cadre d’un nombre. Ce caractère peut être le caractère null de fin. Pour strtol, strtoul, _strtoi64 et _strtoui64, ce caractère de fin peut également être le premier caractère numérique supérieur ou égal à la base numérique fournie par l’utilisateur.

Si le pointeur fourni par l’utilisateur vers un caractère de fin de conversion n’est pas défini NULL ou nullptr au moment de l’appel, un pointeur vers le caractère qui a arrêté l’analyse sera stocké à la place. Si aucune conversion ne peut être effectuée (aucun chiffre valide n’a été trouvé ou la base spécifiée n’est pas valide), la valeur du pointeur de chaîne est stockée à cette adresse.

strtod attend une chaîne au format suivant :

[whitespace] [sign] [digits] [.digits] [{d | D | e | E}[sign]digits]

Il whitespace peut s’agir d’espaces ou de tabulations, qui sont ignorés ; sign soit plus (+) ou moins (-) ; et digits soit un ou plusieurs chiffres décimaux. Si aucun chiffre n’apparaît avant le caractère de base, il doit en figurer au moins un après le caractère de base. Les chiffres décimaux peuvent être suivis d’un exposant, qui se compose d’une lettre d’introduction (d, D, e ou E) et éventuellement d’un entier signé. Si aucune partie exposante ou caractère radix n’apparaît, un caractère radix est supposé suivre le dernier chiffre de la chaîne. Le premier caractère qui ne correspond pas à ce formulaire arrête l’analyse.

Les fonctions strtol, strtoul, _strtoi64 et _strtoui64 attendent une chaîne au format suivant :

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits]

Si l’argument de base est compris entre 2 et 36, il est utilisé comme base du nombre. S’il s’agit de 0, les caractères initiaux référencés par le pointeur de fin de conversion sont utilisés pour déterminer la base. Si le premier caractère est 0 et que le deuxième caractère n’est pas « x » ou « X », la chaîne est interprétée comme un entier octal ; sinon, il est interprété comme un nombre décimal. Si le premier caractère est « 0 » et que le deuxième est « x » ou « X », la chaîne est interprétée comme étant un entier hexadécimal. Si le premier caractère est un chiffre compris entre « 1 » et « 9 », la chaîne est interprétée comme étant un entier décimal. Les lettres de « a » à « z » (ou de « A » à « Z ») se voient affecter des valeurs comprises entre 10 et 35 ; seules sont autorisées les lettres dont les valeurs affectées sont inférieures à base. strtoul et _strtoui64 autorise la présence d’un signe plus (+) ou moins (-) en guise de préfixe ; la présence d’un signe moins de début indique que le signe de la valeur de retour est négative.

La valeur de sortie est affectée par le paramètre de catégorie LC_NUMERIC des paramètres régionaux. Pour plus d’informations, consultez setlocale. Les versions de ces fonctions sans le suffixe _l utilisent les paramètres régionaux pour ce comportement dépendant des paramètres régionaux ; les versions avec le suffixe _l sont identiques, sauf qu'elles utilisent à la place les paramètres régionaux transmis.

Lorsque la valeur retournée par ces fonctions entraîne un dépassement de capacité ou un sous-flux, ou lorsque la conversion n’est pas possible, les valeurs de cas spéciales sont retournées comme indiqué :

Fonction Condition Valeur retournée
strtod Dépassement +/- HUGE_VAL
strtod Dépassement de capacité négatif ou aucune conversion 0
strtol + Dépassement LONG_MAX
strtol - Dépassement LONG_MIN
strtol Dépassement de capacité négatif ou aucune conversion 0
_strtoi64 + Dépassement _I64_MAX
_strtoi64 - Dépassement _I64_MIN
_strtoi64 Aucune conversion 0
_strtoui64 Dépassement _UI64_MAX
_strtoui64 Aucune conversion 0

_I64_MAX, _I64_MINet _UI64_MAX sont définis dans <LIMITS.H>.

wcstod, wcstol, wcstoul, _wcstoi64 et _wcstoui64 sont des versions à caractères larges de strtod, strtol, strtoul, _strtoi64 et _strtoui64, respectivement ; le pointeur vers un argument de fin de conversion de chacune de ces fonctions de caractères larges est une chaîne à caractères larges. Sinon, chacune de ces fonctions de caractères larges se comporte comme son caractère homologue codé sur un octet.

Voir aussi

Conversion de données
Paramètres régionaux
Interprétation des séquences de caractères multioctets
Prise en charge mathématique et à virgule flottante
atof, _atof_l, _wtof, _wtof_l