Fonctions de valeur chaîne en valeur numérique

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Chaque fonction de la famille strtod convertit une chaîne terminée par le caractère NULL en une valeur numérique. Les fonctions disponibles sont répertoriées dans le tableau suivant.

FonctionDescription
strtodConvertissez la chaîne en valeur à virgule flottante double-précision.
strtolConvertit la chaîne en entier long
strtoulConvertissez la chaîne en entier long non signé
_strtoi64Convertissez la chaîne en entier 64 bits __int64
_strtoui64Convertissez la chaîne en entier non signé 16 bits __int64.

wcstod, wcstol, wcstoul, et _wcstoi64 sont des versions à caractères larges de strtod, strtol, strtoul, et _strtoi64, respectivement. L'argument de chaîne de chacune de ces fonctions à caractères étendus est une chaîne à caractères étendus ; chaque fonction se comporte de la même manière que son équivalent dont les caractères sont codés sur un octet sinon.

La fonction strtod accepte deux arguments : le premier est la chaîne d'entrée, le second est un pointeur vers le caractère qui met fin au processus de conversion. strtol, strtoul, _strtoi64 et _strtoui64 prennent un troisième argument comme base de numéro à utiliser dans le processus de conversion.

La chaîne d'entrée est une séquence de caractères qui peuvent être interprétés comme une valeur numérique du type spécifié. Chaque fonction arrête la lecture de la chaîne au premier caractère ne faisant apparemment pas partie d'un nombre. Il peut s'agir du caractère null de fin. Pour strtol, strtoul, _strtoi64, et _strtoui64, ce caractère de fin peut également être le premier chiffre supérieur ou égal à la base de numéro 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 au moment de l'appel, un pointeur vers le caractère qui a arrêté l'analyse est enregistré à la place. Si aucune conversion ne peut être effectuée (aucun chiffre valide n'a été trouvé ou une base non valide a été spécifiée), la valeur du pointeur de chaîne est enregistrée à cette adresse.

strtod attend une chaîne au format suivant :

[espace blanc] [signe] [digits] [.digits] [ {d | D | e | E}[sign]digits]

Un espace blanc peut se composer d'espaces ou de caractères de tabulations, qui sont ignorés ; sign est soit plus (+) soit moins () ; et digits se composent d'un ou plusieurs chiffres décimaux. Si aucun chiffre ne s'affiche avant le caractère de base, au moins un doit apparaître après le caractère de base. Les nombres décimaux peuvent être suivis d'un exposant, qui comprend une lettre préliminaire (d, D, e, ou E) et éventuellement un entier signé. Si ni une partie d'exposant ni un caractère de base n'apparaît, il suppose qu'un caractère de base suit le dernier chiffre dans 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 :

[espace blanc] [{+ | }] [0 [{ x | X }]] [digits]

Si l'argument de base est compris entre 2 et 36, il est utilisé comme base du nombre. Si la valeur est 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 le deuxième caractère n'est pas « x » ou « X », la chaîne est interprétée en tant qu'entier octal ; sinon, elle est interprétée comme un nombre décimal. Si le premier caractère est « 0 » et le deuxième caractère est « x » ou « X », la chaîne est interprétée comme un entier hexadécimal. Si le premier caractère est compris entre « 1 » et « 9 », la chaîne est interprétée comme un entier décimal. Les valeurs 10 à 35 sont assignées aux lettres « à » à « z » (ou « À » à « Z ») ; seules les lettres dont les valeurs assignées sont inférieures à base sont autorisées. strtoul et _strtoui64 autorisent un préfixe de signe plus (+) ou moins () ; un signe moins au début indique que 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 ; consultez setlocale, pour plus d'informations. Les versions de ces fonctions sans le suffixe _l utilisent les paramètres régionaux courants pour ce comportement dépendant des paramètres régionaux ; les versions avec le suffixe _l sont identiques, sauf qu'elles utilisent le paramètre régional passé à la place.

Lorsque la valeur retournée par ces fonctions entraînent un débordement ou un sous-écoulement, ou lorsque la conversion est impossible, les valeurs spéciales de cas sont retournées comme suit :

FonctionConditionValeur de retour
strtodDépassement de capacité+/- HUGE_VAL
strtodSous-écoulement ou aucune conversion0
strtol+ DébordementLONG_MAX
strtol- DébordementLONG_MIN
strtolSous-écoulement ou aucune conversion0
_strtoi64+ Débordement_I64_MAX
_strtoi64- Débordement_I64_MIN
_strtoi64Aucune conversion0
_strtoui64Dépassement de capacité_UI64_MAX
_strtoui64Aucune conversion0

_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 strtod, strtol, strtoul, _strtoi64, et _strtoui64, respectivement ; le pointeur vers un argument de fin de conversion dans chacune de ces fonctions à caractères étendus est une chaîne à caractères étendus. Sinon, chacune de ces fonctions de caractères étendus se comporte de la même manière que son équivalent dont les caractères sont codés sur un octet.

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

Afficher: