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

strtol

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

Składnia

C/C++
#include <cstdlib>

long strtol( 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 long) w przypadku sukcesu. W przypadku gdy wartość zapisana w łańcuchu znaków spowoduje przepełnienie to wówczas funkcja zwraca wartość LONG_MAX lub LONG_MIN. 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 (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.

Przykład

C/C++
#include <cstdio>
#include <cstdlib>

int main()
{
    const char sTekst[] = "0xfftu jest dalej tekst";
    char * pKoniec;
    long iLiczba = strtol( 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

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

Linki zewnętrzne