Freigeben über


Funktionen zur Konvertierung von Zeichenfolgen in numerische Werte

Hinweise

Jede Funktion in der Gruppe strtod konvertiert eine auf NULL abschließende Zeichenfolge in einen numerischen Wert. Die verfügbaren Features sind in der folgenden Tabelle aufgeführt.

Funktion

Beschreibung

strtod

Bekehrtzeichenfolge Gleitkommawert mit doppelter Genauigkeit

strtol

Bekehrtzeichenfolge der lange ganze Zahl

strtoul

Bekehrtzeichenfolge lange ganze Zahl ohne Vorzeichen

_strtoi64

Bekehrtzeichenfolge in 64-Bit- __int64 ganze Zahl

_strtoui64

Bekehrtzeichenfolge in 64-Bit- __int64 ganze Zahl ohne Vorzeichen

wcstod, wcstol, wcstoul und _wcstoi64 sind Breitzeichenversionen von strtod, strtol, strtoul und _strtoi64, verwendet. Das Zeichenfolgenargument zu jeder dieser Breitzeichenfunktionen ist eine Zeichenfolge mit Breitzeichen; jede Funktion verhält sich genauso wie der Einzelbytezeichenentsprechung andernfalls.

Die strtod-Funktion akzeptiert zwei Argumente: das erste ist die Eingabezeichenfolge und das zweite ein Zeiger auf Zeichen, das den Umgang beendet. strtol, strtoul, _strtoi64 und _strtoui64 verwenden ein drittes Argument als Basis zur Verwendung im Konvertierungsprozess.

Die Eingabezeichenfolge ist eine Sequenz von Zeichen, die als numerischer Wert des angegebenen Typs interpretiert werden. Jede Funktion beendet, die Zeichenfolge am ersten Zeichen lesen, das nicht als Teil einer Zahl erkennen kann. Dies ist möglicherweise das beendende NULL-Zeichen. Für strtol, strtoul, _strtoi64 und _strtoui64 kann dieses und Endzeichen das erste numerische Zeichen größer oder gleich der vom Benutzer bereitgestellte Basis auch sein.

Wenn der vom Benutzer bereitgestellte Zeiger zu einem Ende-vonKonvertierungszeichen nicht auf NULL an der Gesprächszeit festgelegt, wird ein Zeiger auf Zeichen, das die Überprüfung abgeschlossen, dort stattdessen gespeichert. Wenn keine Konvertierung ausgeführt werden kann (keine gültigen Ziffern gefunden wurden, oder eine unzulässige Basis wurde angegeben), wird der Wert des Zeichenfolgenzeigers an diese Adresse gespeichert.

strtod erwartet eine Zeichenfolge der folgenden Form:

[Leerzeichen] [Vorzeichen] [digits] [**.**digits] [ {d | D | e | E}[Vorzeichen]digits]

Leerräume bestehen möglicherweise Leerzeichen oder aus Tabstoppzeichen, die ignoriert; Vorzeichen ist entweder Pluszeichen (+) oder Minuszeichen (); und digits sind eine oder mehrere Dezimalstellen. Wenn keine Ziffern vor dem Basiszeichen stehen, muss mindestens eine Ziffer nach dem Basiszeichen stehen. Die Dezimalstellen können von einem Exponenten folgen, der einführenden einem Buchstaben (d, D, e oder E) und optional aus einer Zahl mit Vorzeichen besteht. Wenn weder ein Exponententeil noch ein Basiszeichen angezeigt wird, wird davon ausgegangen, dass ein Basiszeichen auf die letzte Ziffer in der Zeichenfolge folgt. Das erste Zeichen, das dieser Form nicht entspricht, beendet die Überprüfung.

strtol, strtoul, _strtoi64 und _strtoui64-Funktionen wird erwartet eine Zeichenfolge der folgenden Form:

[Leerzeichen] [{+ | }] [0 [{ w | X }]] [digits]

Wenn das Basisarray Argument zwischen 2 und 36 ist, wird es während Basis der Zahl verwendet. Wenn es 0 ist, werden die ersten Zeichen, die auf der Ende-vonKonvertierungszeiger verwiesen wird, verwendet, um die Basisklasse zu bestimmen. Wenn das erste Zeichen 0 ist und das zweite Zeichen nicht "x" und "X" ist, wird die Zeichenfolge als ganze Oktalzahl interpretiert; Andernfalls wird es als Dezimalzahl interpretiert. Wenn das erste Zeichen "0" und das zweite Zeichen nicht "x" oder "X" ist, wird die Zeichenfolge als hexadezimale ganze Zahl interpretiert. Wenn das erste Zeichen "1" bis "9 " ist, wird die Zeichenfolge als ganze Dezimalzahl interpretiert. Der Buchstabe" bis "z" (oder "A" bis "Z ") werden die Werte 10 bis 35 zugewiesen; nur Buchstaben, deren spezifische Werte kleiner sind, als Basisklasse sind zulässig. strtoul und _strtoui64 ermöglichen einem Pluszeichen (+) oder Minuszeichen (des --) Zeichenpräfixes; ein führendes Minuszeichen gibt an, dass der Rückgabewert negiert wird.

Der Ausgabewert ist von der LC_NUMERIC-Kategorieneinstellung des Gebietsschemas betroffen; weitere Informationen finden Sie unter setlocale. Die Versionen dieser Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema für dieses vom Gebietsschema abhängige Verhalten; die Versionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch stattdessen den ihnen übergebenen Gebietsschemaparameter.

Als der Wert, der durch diese Funktionen zurückgegeben wurde, einen Überlauf oder Unterlauf einen verursacht wird oder wenn die Konvertierung nicht möglich ist, werden Sonderfallwerte wie dargestellt zurückgegeben:

Funktion

Bedingung

Zurückgegebener Wert

strtod

Overflow

+/- HUGE_VAL

strtod

Unterlauf oder keine Konvertierung

0

strtol

+ Überlauf

LONG_MAX

strtol

Überlauf -

LONG_MIN

strtol

Unterlauf oder keine Konvertierung

0

_strtoi64

+ Überlauf

_I64_MAX

_strtoi64

Überlauf -

_I64_MIN

_strtoi64

Keine Konvertierung

0

_strtoui64

Overflow

_UI64_MAX

_strtoui64

Keine Konvertierung

0

__I64_MAX,I64_MIN und _UI64_MAX werden in LIMITS.H. definiert.

wcstod, wcstol, wcstoul, _wcstoi64 und _wcstoui64 sind Breitzeichenversionen von strtod, strtol, strtoul, _strtoi64 und _strtoui64, verwendet; der Zeiger zu einem Ende-vonKonvertierungsargument zu jeder dieser Breitzeichenfunktionen ist eine Zeichenfolge mit Breitzeichen. Andernfalls verhält sich jede dieser Breitzeichenfunktionen identisch mit der Einzelbytezeichenentsprechung.

Siehe auch

Referenz

Datenkonvertierung

Locale

Interpretation von Mehrbytezeichensequenzen

Gleitkommaunterstützung

atof, _atof_l, _wtof, _wtof_l