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.