strtold
, , _strtold_l
wcstold
, ,_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
_doserrno
et _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 NULL
le 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
] [{d
e
D
| |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_l
wcstod
, ,_wcstod_l
strtol
, , wcstol
_strtol_l
, ,_wcstol_l
strtoul
, , _strtoul_l
wcstoul
, ,_wcstoul_l
atof
, , _atof_l
_wtof
, ,_wtof_l
localeconv
_create_locale
, _wcreate_locale
_free_locale