Namespaces
Variants

wcstof, wcstod, wcstold

From cppreference.net
< c ‎ | string ‎ | wide
Défini dans l'en-tête <wchar.h>
float wcstof ( const wchar_t * restrict str, wchar_t ** restrict str_end ) ;
(depuis C99)
double wcstod ( const wchar_t * str, wchar_t ** str_end ) ;
(depuis C95)
(jusqu'à C99)
double wcstod ( const wchar_t * restrict str, wchar_t ** restrict str_end ) ;
(depuis C99)
long double wcstold ( const wchar_t * restrict str, wchar_t ** restrict str_end ) ;
(depuis C99)

Interprète une valeur à virgule flottante dans la chaîne large pointée par str .

La fonction ignore tous les caractères d'espacement (tels que déterminés par iswspace ) jusqu'à ce que le premier caractère non-espace soit trouvé. Ensuite, elle prend autant de caractères que possible pour former une représentation valide en virgule flottante et les convertit en une valeur numérique à virgule flottante. La valeur valide en virgule flottante peut être l'une des suivantes :

  • expression décimale en virgule flottante. Elle se compose des parties suivantes :
  • (optionnel) signe plus ou moins
  • séquence non vide de chiffres décimaux contenant optionnellement un caractère de point décimal (tel que déterminé par la locale C actuelle) (définit la mantisse)
  • (optionnel) e ou E suivi d'un signe moins ou plus optionnel et d'une séquence non vide de chiffres décimaux (définit l'exposant en base 10 )
  • expression en virgule flottante hexadécimale. Elle se compose des parties suivantes :
  • (optionnel) signe plus ou moins
  • 0x ou 0X
  • séquence non vide de chiffres hexadécimaux contenant éventuellement un caractère de point décimal (déterminé par la locale C actuelle) (définit la mantisse)
  • (optionnel) p ou P suivi d'un signe moins ou plus optionnel et d'une séquence non vide de chiffres décimaux (définit l'exposant en base 2 )
  • expression d'infini. Elle se compose des parties suivantes :
  • (optionnel) signe plus ou moins
  • INF ou INFINITY sans distinction de casse
  • expression NaN (not-a-number). Elle se compose des parties suivantes :
  • (optionnel) signe plus ou moins
  • NAN ou NAN( char_sequence  ) sans distinction de casse pour la partie NAN . char_sequence ne peut contenir que des chiffres, des lettres latines et des tirets bas. Le résultat est une valeur flottante NaN silencieuse.
(depuis C99)
  • toute autre expression qui peut être acceptée par la locale C actuellement installée locale .

Les fonctions définissent le pointeur pointé par str_end pour pointer vers le caractère large après le dernier caractère interprété. Si str_end est un pointeur nul, il est ignoré.

Table des matières

Paramètres

str - pointeur vers la chaîne large terminée par un caractère nul à interpréter
str_end - pointeur vers un pointeur de caractère large

Valeur de retour

Valeur à virgule flottante correspondant au contenu de str en cas de succès. Si la valeur convertie dépasse la plage du type de retour correspondant, une erreur de plage se produit et HUGE_VAL , HUGE_VALF ou HUGE_VALL est retourné. Si aucune conversion ne peut être effectuée, 0 est retourné.

Exemple

#include <errno.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    const wchar_t* p = L"111.11 -2.22 0X1.BC70A3D70A3D7P+6  1.18973e+4932zzz";
    printf("Parsing L\"%ls\":\n", p);
    wchar_t* end;
    for (double f = wcstod(p, &end); p != end; f = wcstod(p, &end))
    {
        printf("'%.*ls' -> ", (int)(end-p), p);
        p = end;
        if (errno == ERANGE){
            printf("range error, got ");
            errno = 0;
        }
        printf("%f\n", f);
    }
}

Sortie :

Parsing L"111.11 -2.22 0X1.BC70A3D70A3D7P+6  1.18973e+4932zzz":
'111.11' -> 111.110000
' -2.22' -> -2.220000
' 0X1.BC70A3D70A3D7P+6' -> 111.110000
'  1.18973e+4932' -> range error, got inf

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.29.4.1.1 Les fonctions wcstod, wcstof et wcstold (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.29.4.1.1 Les fonctions wcstod, wcstof et wcstold (p: À DÉTERMINER)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.29.4.1.1 Les fonctions wcstod, wcstof et wcstold (p: 426-428)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.24.4.1.1 Les fonctions wcstod, wcstof et wcstold (p: 372-374)

Voir aussi

convertit une chaîne d'octets en une valeur à virgule flottante
(fonction)
Documentation C++ pour wcstof , wcstod , wcstold