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.
Funktion | 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:
[] [] [] [digits
] [] [digits
.
] [{ | | e
d
D
| E
}[sign
]]digits
sign
whitespace
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_MIN
und _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 Multibytezeichensequenzen
Mathematische Unterstützung und Gleitkommaunterstützung
atof
, , _atof_l
_wtof
_wtof_l