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 la sortie est affectée par la valeur du paramètre de la 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_MIN
et _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 des fonctions mathématiques et à virgule flottante
atof
, , _atof_l
_wtof
, ,_wtof_l