wcstol, wcstoll
|
Definiert in Header
<wchar.h>
|
||
|
long
wcstol
(
const
wchar_t
*
str,
wchar_t
**
str_end,
int
base
)
;
|
(seit C95)
(bis C99) |
|
|
long
wcstol
(
const
wchar_t
*
restrict
str,
wchar_t
**
restrict
str_end,
int base ) ; |
(seit C99) | |
|
long
long
wcstoll
(
const
wchar_t
*
restrict
str,
wchar_t
**
restrict
str_end,
int base ) ; |
(seit C99) | |
Interpretiert einen ganzzahligen Wert in der breiten Zeichenkette, auf die
str
zeigt.
Verwirft alle Leerzeichen (wie durch Aufruf von
iswspace
identifiziert) bis zum ersten Nicht-Leerzeichen, dann nimmt so viele Zeichen wie möglich, um eine gültige
Basis-n
(wobei n=
base
) Ganzzahldarstellung zu bilden und konvertiert sie in einen Ganzzahlwert. Der gültige Ganzzahlwert besteht aus folgenden Teilen:
- (optional) Plus- oder Minuszeichen
-
(optional)
Präfix (
0) zur Kennzeichnung der Oktalbasis (gilt nur, wenn die Basis 8 oder 0 ist) -
(optional)
Präfix (
0xoder0X) zur Kennzeichnung der Hexadezimalbasis (gilt nur, wenn die Basis 16 oder 0 ist) - eine Ziffernfolge
Die Menge der gültigen Werte für die Basis ist
{0, 2, 3, ..., 36}
. Die Menge der gültigen Ziffern für Basis-
2
-Integer ist
{0, 1}
, für Basis-
3
-Integer ist
{0, 1, 2}
und so weiter. Für Basen größer als
10
umfassen gültige Ziffern alphabetische Zeichen, beginnend mit
Aa
für Basis-
11
-Integer bis zu
Zz
für Basis-
36
-Integer. Die Groß-/Kleinschreibung der Zeichen wird ignoriert.
Zusätzliche numerische Formate können von der aktuell installierten C- Locale akzeptiert werden.
Wenn der Wert von
base
0
beträgt, wird die numerische Basis automatisch erkannt: wenn das Präfix
0
lautet, ist die Basis oktal, wenn das Präfix
0x
oder
0X
lautet, ist die Basis hexadezimal, andernfalls ist die Basis dezimal.
Wenn das Minuszeichen Teil der Eingabesequenz war, wird der numerische Wert, der aus der Ziffernfolge berechnet wurde, negiert, als ob durch unary minus im Ergebnistyp.
Die Funktion setzt den Zeiger, auf den
str_end
zeigt, so, dass er auf das Breitzeichen nach dem letzten interpretierten Zeichen zeigt. Wenn
str_end
ein Nullzeiger ist, wird er ignoriert.
Inhaltsverzeichnis |
Parameter
| str | - | Zeiger auf den nullterminierten Breitzeichen-String, der interpretiert werden soll |
| str_end | - | Zeiger auf einen Zeiger zu einem Breitzeichen |
| base | - | base des interpretierten Ganzzahlwerts |
Rückgabewert
Integer-Wert entsprechend dem Inhalt von
str
bei Erfolg. Falls der konvertierte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf und
LONG_MAX
,
LONG_MIN
,
LLONG_MAX
oder
LLONG_MIN
wird zurückgegeben. Falls keine Konvertierung durchgeführt werden kann, wird
0
zurückgegeben.
Beispiel
#include <stdio.h> #include <errno.h> #include <wchar.h> int main(void) { const wchar_t *p = L"10 200000000000000000000000000000 30 -40"; printf("Parsing L'%ls':\n", p); wchar_t *end; for (long i = wcstol(p, &end, 10); p != end; i = wcstol(p, &end, 10)) { printf("'%.*ls' -> ", (int)(end-p), p); p = end; if (errno == ERANGE){ printf("range error, got "); errno = 0; } printf("%ld\n", i); } }
Ausgabe:
Parsing L'10 200000000000000000000000000000 30 -40': '10' -> 10 ' 200000000000000000000000000000' -> range error, got 9223372036854775807 ' 30' -> 30 ' -40' -> -40
Referenzen
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.29.4.1.2 Die Funktionen wcstol, wcstoll, wcstoul und wcstoull (S. 429-430)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.24.4.1.2 Die Funktionen wcstol, wcstoll, wcstoul und wcstoull (S. 375-376)
Siehe auch
|
(C99)
|
wandelt eine Byte-Zeichenkette in einen ganzzahligen Wert um
(Funktion) |
|
(C95)
(C99)
|
wandelt eine Breitzeichen-Zeichenkette in einen vorzeichenlosen ganzzahligen Wert um
(Funktion) |
|
C++-Dokumentation
für
wcstol
,
wcstoll
|
|