Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Język C++

strtoul

[funkcja] Konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego (unsigned long).

Składnia

C/C++
#include <cstdlib>

unsigned long strtoul( const char * start, char ** end, int base );

Argumenty

ArgumentOpis
const char * startŁańcuch znaków, który ma zostać przekonwertowany do postaci liczbowej.
char ** endArgument wyjściowy do którego zostanie zapisany adres pierwszego znaku, którego nie udało się przekonwertować. Funkcja zignoruje znaczenie argumentu w przypadku gdy jego wartość zostanie ustawiona na NULL.
int baseSystem liczbowy w którym zapisana jest wartość w łańcuchu znaków. Wartość argumentu musi mieścić się w przedziale od 2 do 36. W przypadku gdy wartość niniejszego argumentu wynosi 0 - funkcja wykrywa rodzaj stosowanego systemu liczbowego. Więcej informacji na temat automatycznego wykrywania systemu liczbowego w dalszej części dokumentu.

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ść » standard Cerrno 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

C/C++
#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

strtolKonwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego (long). (funkcja)
atolKonwertuje wartość zapisaną w łańcuchu znaków do postaci liczby typu całkowitego (long). (funkcja)

Linki zewnętrzne