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

Beschreibung

Diese Funktionen wandeln den ersten Teil der Zeichenkette aus Langzeichenwerten, auf die nptr zeigt, in eine Gleitkommazahl 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 Nullzeiger ist.

Das Dezimalzeichen ist in der Lokalität des Programms definiert (Kategorie LS_NUMERIC). In der POSIX-Lokalität, bzw. in einer Lokalität, in der das Dezimalzeichen nicht definiert ist, ist das Dezimalzeichen standardmäßig der Punkt (.).

In einer anderen als der POSIX-Lokalität können andere Formate für die mittlere Folge zulässig sein. Wenn diese 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 Nullzeiger 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 gesetzt, um den Fehler anzuzeigen.

Fehler

wcstod(), wcstof() und wcstold() schlagen fehl, wenn gilt:


ERANGE

Der Wert, der zurückgegeben werden soll, würde zu einem Überlauf oder einem Unterlauf führen.

Hinweise

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.

Einschränkung
In dieser Version des C-Laufzeitsystems werden nur 1-Byte-Zeichen als Langzeichen unterstützt. Sie sind vom Typ wchar_t (siehe stddef.h). (Ende)

Siehe auch

iswspace(), localeconv(), scanf(), setlocale(), wcstol(), wchar.h.