Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

wcstod, wcstof, wcstold - Langzeichenkette in Gleitkommazahl umwandeln

&pagelevel(4)&pagelevel

Definition

#include <wchar.h>

double wcstod(const wchar_t *nptr, wchar_t **endptr);
float wcstof(const wchar_t *nptr, wchar_t **endptr);
long double wcstold(const wchar_t *nptr, wchar_t **endptr);

Diese Funktionen wandeln den ersten Teil der Zeichenkette aus Langzeichenwerten, auf die nptr zeigt, in eine Darstellung mit doppelter Genauigkeit um. Zuerst wird die Eingabe-Zeichenkette aus Langzeichenwerten in drei Teile zerlegt:

  • eine möglicherweise leere Folge von Zwischenraumzeichen als Langzeichenwerte (entsprechend der Angabe durch iswspace) am Anfang,

  • eine Folge, die als Gleitkommakonstante interpretiert wird,

  • und schließlich eine Zeichenkette aus Langzeichenwerten mit einem oder mehr nicht erkannten Langzeichenwerten, einschließlich abschließendem Nullbyte der Eingabe-Zeichenkette aus Langzeichenwerten.

Dann wird versucht, die mittlere Folge in eine Gleitkommazahl umzuwandeln. Anschließend wird das Ergebnis zurückgegeben.

Es wird erwartet, dass diese mittlere Folge eines der folgenden Formate hat:

[+|-][Dezimalziffer...][.][Dezimalziffer...][{E|e}[+|-]Dezimalziffer...]
oder
[+|-]0{X|x}[ Hexziffer...][.][Hexziffer...][{P|p}[+|-]Dezimalziffer...]
Diese mittlere Folge ist als die längste Teilfolge der Eingabe-Zeichenkette aus Langzeichenwerten definiert. Sie beginnt mit dem ersten Langzeichenwert, der kein Zwischenraumzeichen ist und das erwartete Format aufweist. Diese Folge enthält keine Langzeichenwerte, wenn die Eingabe-Zeichenkette aus Langzeichenwerten leer ist oder nur aus Langzeichenwerten besteht, die Zwischenraumzeichen sind, bzw. wenn der erste Langzeichenwert, der kein Zwischenraumzeichen ist, etwas anderes ist als ein Vorzeichen, eine Ziffer oder ein Dezimalzeichen.

Wenn diese mittlere Folge das erwartete Format aufweist, wird die Folge der Langzeichenwerte, die mit der ersten Ziffer oder dem Dezimalzeichen beginnt (je nachdem, was zuerst steht), als Gleitkommakonstante entsprechend der Definition in der Sprache C interpretiert.
Der Unterschied besteht darin, dass das Dezimalzeichen statt des Punktes verwendet wird und, wenn weder ein Exponententeil noch ein Dezimalzeichen erscheint, nach der letzten Ziffer in der Zeichenkette aus Langzeichenwerten ein Dezimalzeichen angenommen wird.
Wenn die Folge mit einem Minuszeichen beginnt, ist das Ergebnis der Umwandlung negativ.
Ein Zeiger auf die letzte Zeichenkette aus Langzeichenwerten wird in dem Objekt abgelegt, auf das endptr zeigt, wenn endptr kein NULL-Zeiger ist.

Das Dezimalzeichen ist in der Lokalität des Programms definiert (Kategorie LC_NUMERIC).

Wenn die mittlere Folge leer ist oder nicht das erwartete Format aufweist, wird keine Umwandlung durchgeführt. Der Wert von nptr wird in dem Objekt abgelegt, auf das endptr zeigt, wenn endptr kein NULL-Zeiger ist.

Returnwert

konvertierter Wert bei Erfolg.


0

wenn keine Umwandlung durchgeführt werden konnte


+/-HUGE_VAL
+/-HUGE_VALF
+/-HUGE_VALL

abhängig vom Funktionstyp und Vorzeichen des Ergebnisses, wenn der richtige Wert außerhalb des Bereichs der darstellbaren Werte liegt.
errno wird auf ERANGE gesetzt, um den Fehler anzuzeigen.

Hinweise

In dieser Version des C-Laufzeitsystems werden nur 1-Byte-Zeichen als Langzeichen unterstützt.

Da 0 sowohl bei einem Fehler zurückgegeben wird als auch bei Erfolg einen gültigen Returnwert darstellt, muss eine Anwendung, die auf Fehler prüfen will, die folgenden Aktionen ausführen: errno wird auf 0 gesetzt, wcstod aufgerufen und der Wert von errno überprüft. Falls dieser Wert ungleich Null ist, wird angenommen, dass ein Fehler aufgetreten ist.

Siehe auch

iswspace, localeconv, scanf, setlocale, strtod, wcstol