wcstof, wcstod, wcstold

Header: <wchar.h>

Interprets a floating-point value in a wide string pointed to by str.

# Declarations

float wcstof( const wchar_t* restrict str, wchar_t** restrict str_end );

(since C99)

double wcstod( const wchar_t* str, wchar_t** str_end );

(since C95) (until C99)

double wcstod( const wchar_t* restrict str, wchar_t** restrict str_end );

(since C99)

long double wcstold( const wchar_t* restrict str, wchar_t** restrict str_end );

(since C99)

# Parameters

# Return value

Floating-point value corresponding to the contents of str on success. If the converted value falls out of range of corresponding return type, range error occurs and HUGE_VAL, HUGE_VALF or HUGE_VALL is returned. If no conversion can be performed, 0 is returned.

# Example

#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);
    }
}

# See also