Namensräume
Varianten
Aktionen

wcstof, wcstod, wcstold

Von cppreference.com
< c‎ | string‎ | wide
 
 
 
 
Definiert in Header <wchar.h>
float       wcstof( const wchar_t* restrict str, wchar_t** restrict str_end );
(seit C99)
double      wcstod( const wchar_t* str, wchar_t** str_end );
(seit C95)
(bis C99)
double      wcstod( const wchar_t* restrict str, wchar_t** restrict str_end );
(seit C99)
long double wcstold( const wchar_t* restrict str, wchar_t** restrict str_end );
(seit C99)

Interpretiert einen Gleitkommawert in einer von str aufgerufenen Wide-String.

Die Funktion verwirft alle Leerzeichen (wie von iswspace bestimmt) bis zum ersten Nicht-Leerzeichen. Dann nimmt sie so viele Zeichen wie möglich, um eine gültige Gleitkommadarstellung zu bilden, und wandelt sie in einen Gleitkommawert um. Der gültige Gleitkommawert kann einer der folgenden sein

  • Dezimale Gleitkomma-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • nicht-leere Folge von Dezimalziffern, die optional ein Dezimalpunktzeichen enthält (wie von der aktuellen C Locale bestimmt) (definiert den Signifikand)
  • (optional) e oder E gefolgt von einem optionalen Minus- oder Pluszeichen und einer nichtleeren Sequenz von Dezimalziffern (definiert den Exponenten zur Basis 10)
  • Hexadezimale Gleitkomma-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • 0x oder 0X
  • nicht-leere Folge von Hexadezimalziffern, die optional ein Dezimalpunktzeichen enthält (wie von der aktuellen C Locale bestimmt) (definiert den Signifikand)
  • (optional) p oder P gefolgt von einem optionalen Minus- oder Pluszeichen und einer nichtleeren Sequenz von Dezimalziffern (definiert den Exponenten zur Basis 2)
  • Unendlichkeits-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • INF oder INFINITY (Groß-/Kleinschreibung wird ignoriert)
  • Nicht-eine-Zahl-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • NAN oder NAN(char_sequence ) (Groß-/Kleinschreibung des Teils NAN wird ignoriert). char_sequence darf nur Ziffern, lateinische Buchstaben und Unterstriche enthalten. Das Ergebnis ist ein Quiet-NaN-Gleitkommawert.
(seit C99)
  • jeder andere Ausdruck, der von der aktuell installierten C Locale akzeptiert werden kann.

Die Funktion setzt den von str_end aufgerufenen Zeiger auf das Wide-Zeichen nach dem letzten interpretierten Zeichen. Wenn str_end ein Nullzeiger ist, wird er ignoriert.

Inhalt

[bearbeiten] Parameter

str - Zeiger auf den nullterminierten Wide-String, der interpretiert werden soll
str_end - Zeiger auf einen Zeiger auf ein Wide-Zeichen.

[bearbeiten] Rückgabewert

Gleitkommawert, der im Erfolgsfall dem Inhalt von str entspricht. Wenn der umgewandelte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf und HUGE_VAL, HUGE_VALF oder HUGE_VALL wird zurückgegeben. Wenn keine Umwandlung durchgeführt werden kann, wird 0 zurückgegeben.

[bearbeiten] Beispiel

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

Ausgabe

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

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.29.4.1.1 Die Funktionen wcstod, wcstof und wcstold (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.29.4.1.1 Die Funktionen wcstod, wcstof und wcstold (S. TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.29.4.1.1 Die Funktionen wcstod, wcstof und wcstold (S. 426-428)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.24.4.1.1 Die Funktionen wcstod, wcstof und wcstold (S. 372-374)

[bearbeiten] Siehe auch

konvertiert einen Byte-String in einen Gleitkommawert
(Funktion) [bearbeiten]
C++ Dokumentation für wcstof, wcstod, wcstold