Partager via


strtold, , _strtold_lwcstold, ,_wcstold_l

Convertit les chaînes en valeur à virgule flottante double précision long.

Syntaxe

long double strtold(
   const char *strSource,
   char **endptr
);
long double _strtold_l(
   const char *strSource,
   char **endptr,
   _locale_t locale
);
long double wcstold(
   const wchar_t *strSource,
   wchar_t **endptr
);
long double wcstold_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   _locale_t locale
);

Paramètres

strSource
Chaîne se terminant par un caractère Null à convertir.

endptr
Pointeur désignant le caractère qui arrête l’analyse.

locale
Paramètres régionaux à utiliser.

Valeur retournée

strtold retourne la valeur du nombre à virgule flottante sous la forme d’un long double, sauf si la représentation provoquerait un dépassement de capacité, dans ce cas, la fonction retourne +/-HUGE_VALL. Le signe HUGE_VALL correspond au signe de la valeur qui ne peut pas être représentée. strtold retourne 0 si aucune conversion ne peut être effectuée ou en cas de dépassement de capacité négatif.

wcstold retourne des valeurs de façon analogue à strtold. Pour les deux fonctions, errno la valeur est définie ERANGE si le dépassement de capacité ou le sous-flux se produit et que le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres.

Pour plus d’informations sur les codes de retour, consultez , , _sys_errlist_doserrnoet _sys_nerr.errno

Notes

Chaque fonction convertit la chaîne d’entrée strSource en long double. La strtold fonction arrête de lire la chaîne strSource au premier caractère qu’elle ne peut pas reconnaître dans le cadre d’un nombre. Il peut s’agir du caractère null de fin. La version à caractères larges de strtold est wcstold ; son argument strSource est une chaîne de caractères larges. Sinon, ces fonctions se comportent de façon identique.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routines de texte générique

Routine TCHAR.H _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_tcstold strtold strtold wcstold
_tcstold_l _strtold_l _strtold_l _wcstold_l

Le paramètre de catégorie LC_NUMERIC des paramètres régionaux actifs détermine la reconnaissance du caractère de base dans strSource. Pour plus d’informations, consultez setlocale, _wsetlocale. Les fonctions sans suffixe _l utilisent les paramètres régionaux actifs ; _strtold_l et _wcstold_l sont identiques à _strtold et _wcstold, sauf qu’elles utilisent à la place les paramètres régionaux transmis. Pour plus d’informations, consultez Locale.

Si endptr ce n’est pas NULLle cas, un pointeur vers le caractère qui a arrêté l’analyse est stocké à l’emplacement vers lequel pointe endptr. Si aucune conversion ne peut être effectuée (aucun chiffre valide n’a été trouvé ou la base spécifiée n’était pas valide), la valeur de strSource est stockée à l’emplacement désigné par endptr.

strtold s’attend à ce que strSource pointe vers une chaîne au format suivant :

[whitespace][sign][digits][.digits] [{deD | | E | }[sign]]digits

Un whitespace peut se composer d’espaces et de tabulations, qui sont ignorés ; sign est un signe plus (+) ou moins (-) ; et digits représente 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.

Spécifications

Routine En-tête requis
strtold, _strtold_l <stdlib.h>
wcstold, _wcstold_l <stdlib.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *string;
   char *stopstring;
   long double x;

   string = "3.1415926535898This stopped it";
   x = strtold(string, &stopstring);
   printf("string = %s\n", string);
   printf("   strtold = %.13Lf\n", x);
   printf("   Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
   strtold = 3.1415926535898
   Stopped scan at: This stopped it

Voir aussi

Conversion de données
Prise en charge des fonctions mathématiques et à virgule flottante
Interprétation des séquences de caractères multioctets
Paramètres régionaux
Chaîne à fonctions de valeur numérique
strtod, , _strtod_lwcstod, ,_wcstod_l
strtol, , wcstol_strtol_l, ,_wcstol_l
strtoul, , _strtoul_lwcstoul, ,_wcstoul_l
atof, , _atof_l_wtof, ,_wtof_l
localeconv
_create_locale, _wcreate_locale
_free_locale