Składnia
#include <cstdlib>
unsigned long strtoul( const char * start, char ** end, int base );
Argumenty
Zwracana wartość
Funkcja zwraca wartość z łańcucha znaków przekonwertowaną do postaci liczbowej (typ
unsigned long) w przypadku sukcesu. W przypadku gdy wartość zapisana w łańcuchu znaków spowoduje przepełnienie to wówczas funkcja zwraca wartość
ULONG_MAX. W przypadku wystąpienia przepełnienia wartość
errno jest ustawiana na
ERANGE.
Funkcja zwraca wartość zero w przypadku gdy nie jest możliwe dokonanie konwersji łańcucha znaków przekazanego jako argument funkcji.
Opis szczegółowy
Funkcja konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby całkowitej typu (unsigned long). System liczbowy w jakim zapisany jest wejściowy łańcuch znaków określa się poprzez argument
base.
Funkcja przerywa proces konwersji w chwili napotkania znaku, który nie jest częścią liczby. Może być to zarówno znak terminalny łańcucha znaków jak i pierwsza wartość liczbowa większa lub równa wartości
base.
W przypadku gdy wartość
base wynosi zero to pierwsze znaki zapisane w przekazanym łańcuchu znaków
start są wykorzystywane do określenia wartości
base.
Zasady automatycznego wykrywania systemu liczbowego
Jeżeli pierwszym znakiem jest '0', a drugim znakiem nie jest 'x' ani 'X' to łańcuch znaków będzie interpretowany jako system oktalny (ósemkowy).
Jeżeli pierwszym znakiem jest '0', a drugim znakiem jest 'x' albo 'X' to łańcuch znaków będzie interpretowany jako system heksadecymalny (szesnastkowy).
Jeżeli pierwszym znakiem jest wartość z przedziału '1' do '9' to łańcuch znaków jest zostanie zinterpretowany jako system dziesiętny.
W przypadku gdy pierwszym znakiem będzie litera z zakresu 'a' do 'z' (bądź 'A' do 'Z') to konwersja się nie powiedzie.
Dodatkowe informacje
Literom z zakresu 'a' do 'z' (bądź 'A' do 'Z') przypisywane są wartości od 10 do 35. Dozwolone są litery tylko te, których wartość jest mniejsza niż ustawiona wartość
base.
Niniejsza funkcja pozwala na występowanie znaku '+' lub '-' na początku łańcucha znaków - poprzedzający znak minus sprawia, że zwrócona wartość będzie zanegowana.
Przykład
#include <cstdio>
#include <cstdlib>
int main()
{
const char sTekst[] = "0xfftu jest dalej tekst";
char * pKoniec;
unsigned long iLiczba = strtoul( sTekst, & pKoniec, 0 );
printf( "Liczba = %d\n", iLiczba );
printf( "Konwersja zakonczona: %s\n", pKoniec );
return 0;
}
Standardowe wyjście programu:
Liczba = 255
Konwersja zakonczona: tu jest dalej tekst
Zagadnienia powiązane
strtol | Konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego (long). (funkcja) |
---|
atol | Konwertuje wartość zapisaną w łańcuchu znaków do postaci liczby typu całkowitego (long). (funkcja) |
---|
Linki zewnętrzne