Funktionen zur Konvertierung von Zeichenfolgen in numerische Werte

Hinweise

Jede Funktion in der strto* Familie konvertiert eine mit Null beendete Zeichenfolge in einen numerischen Wert. In der folgenden Tabelle sind die verfügbaren Funktionen aufgeführt.

Function Beschreibung
strtod Konvertiert eine Zeichenfolge in einen Gleitkommawert mit doppelter Genauigkeit
strtol Konvertieren einer Zeichenfolge in eine ganze long-Zahl
strtoul Konvertieren einer Zeichenfolge in eine ganze unsigned long-Zahl
_strtoi64 Konvertiert eine Zeichenfolge in eine __int64-Ganzzahl mit 64 Bit
_strtoui64 Konvertiert eine Zeichenfolge in eine __int64-Ganzzahl mit 64 Bit ohne Vorzeichen

wcstod, wcstol, wcstoul und _wcstoi64 sind jeweils Breitzeichenversionen von strtod, strtol, strtoul und _strtoi64. Das Zeichenfolgenargument für jede dieser Breitzeichenfunktionen ist eine Breitzeichenfolge. Jede Funktion verhält sich genau wie ihre entsprechende Einzelbytezeichen-Version.

Die strtod Funktion verwendet zwei Argumente: die erste ist die Eingabezeichenfolge und der zweite ein Zeiger auf das Zeichen, das den Konvertierungsprozess beendet. strtol, strtoul_strtoi64 und _strtoui64 nehmen Sie ein drittes Argument als Zahlenbasis, die im Konvertierungsprozess verwendet werden soll.

Die Eingabezeichenfolge ist eine Sequenz von Zeichen, die als numerischer Wert des angegebenen Typs interpretiert werden. Jede Funktion beendet das Lesen der Zeichenfolge am ersten Zeichen, das nicht als Teil einer Zahl erkannt werden kann. Dieses Zeichen kann das endende Nullzeichen sein. Für strtol, strtoul, _strtoi64 und _strtoui64 kann dieses beendende Zeichen auch das erste numerische Zeichen größer oder gleich der vom Benutzer angegebenen Zahlenbasis sein.

Wenn der vom Benutzer bereitgestellte Zeiger auf ein End-of-Conversion-Zeichen nicht auf NULL oder nullptr zur Anrufzeit festgelegt ist, wird stattdessen ein Zeiger auf das Zeichen gespeichert, das den Scan beendet hat. Wenn keine Konvertierung ausgeführt werden kann (keine gültigen Ziffern gefunden oder ungültige Basis angegeben), wird der Wert des Zeichenfolgenzeigers an dieser Adresse gespeichert.

strtod erwartet eine Zeichenfolge im folgenden Format:

[whitespace] [sign] [digits] [.digits] [{d | D | e | E}[sign]digits]

A whitespace kann aus Leerzeichen oder Tabstoppzeichen bestehen, die ignoriert werden; sign ist entweder Pluszeichen (+) oder Minuszeichen (-); und digits es handelt sich um eine oder mehrere Dezimalstellen. Wenn keine Ziffern vor dem Basiszeichen stehen, muss mindestens eine Ziffer nach dem Basiszeichen stehen. Auf die Dezimalstellen kann ein Exponent folgen, der aus einem einführenden Buchstaben (d, D, e oder E) und einer optional Zahl mit Vorzeichen besteht. Wenn kein exponentischer Teil oder radix-Zeichen angezeigt wird, wird davon ausgegangen, dass der letzten Ziffer in der Zeichenfolge ein Radixzeichen folgt. Das erste Zeichen, das nicht in dieses Formular passt, beendet den Scan.

Die Funktionen strtol, strtoul, _strtoi64 und _strtoui64 erwarten eine Zeichenfolge der folgenden Form:

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits]

Wenn das Basisargument zwischen 2 und 36 liegt, wird es als Basis der Zahl verwendet. Bei 0 werden die Anfangszeichen, auf die der Zeiger für das Ende der Konvertierung verweist, verwendet, um die Basis zu bestimmen. Wenn das erste Zeichen 0 ist und das zweite Zeichen nicht "x" oder "X" ist, wird die Zeichenfolge als oktale ganze Zahl interpretiert. andernfalls wird sie 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. Die Buchstaben "a" bis "z" (bzw. "A" bis "Z") werden den Werten 10 bis 35 zugewiesen. Nur Buchstaben, deren zugewiesene Werte kleiner als base sind, sind zulässig. strtoul und _strtoui64 lassen ein Pluszeichen (+) oder ein Minuszeichens (-) als Präfix zu. Ein führendes Minuszeichen gibt an, dass der Rückgabewert negiert wird.

Der Ausgabewert wird durch die Einstellung der LC_NUMERIC Kategorieeinstellung des Gebietsschemas beeinflusst. 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.

Wenn der von diesen Funktionen zurückgegebene Wert zu einem Überlauf oder Unterlauf führen würde oder wenn die Konvertierung nicht möglich ist, werden Sonderfallwerte wie gezeigt zurückgegeben:

Funktion Bedingung Zurückgegebener Wert
strtod Überlauf +/- 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 Überlauf _UI64_MAX
_strtoui64 Keine Konvertierung 0

_I64_MAX, _I64_MINund _UI64_MAX werden in <LIMITS.H>.

wcstod, wcstol, wcstoul, _wcstoi64 und _wcstoui64 sind Breitzeichenversionen von strtod, strtol, strtoul, _strtoi64 bzw. _strtoui64. Der Zeiger auf das Argument zum Beenden der Konvertierung ist für jede dieser Breitzeichenfunktionen eine Breitzeichenfolge. Anderenfalls verhält sich jede dieser Breitzeichenfunktionen genau wie ihre entsprechende Einzelbytezeichen-Version.

Siehe auch

Datenkonvertierung
Gebietsschema
Interpretation von Multibyte-Zeichensequenzen
Mathematische und Gleitkommaunterstützung
atof, _atof_l, _wtof, _wtof_l