Składnia
#include <cstdlib>
long strtol( const char * start, char ** end, int base );
Argumenty
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ść
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 (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
#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
strtoul | Konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego (unsigned long). (funkcja) |
---|
atol | Konwertuje wartość zapisaną w łańcuchu znaków do postaci liczby typu całkowitego (long). (funkcja) |
---|
Linki zewnętrzne
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.