Ц ++ стртолл () - Ц ++ стандардна библиотека

Функција стртолл () у Ц ++ интерпретира садржај низа као интегрални број наведене базе и враћа његову вредност као лонг лонг инт.

Ова функција такође поставља показивач да покаже на први знак након последњег важећег знака низа ако постоји, у супротном је показивач постављен на нулу.

 За основу 10 и низ "201кз $" Важећи нумерички део -> 201 Први знак након важећег нумеричког дела -> к

стртолл () прототип (од Ц ++ 11 стандарда)

 лонг лонг инт стртолл (цонст цхар * стр, цхар ** крај, инт база);

Функција стртолл () узима стринг, показивач на знак и цјелобројну вриједност - басе као свој параметар, интерпретира садржај низа као интегрални број дате базе и враћа дугачку дугу инт вриједност.

Ова функција је дефинисана у заглављу датотеке.

стртолл () параметри

  • стр: Низ који има приказ интегралног броја.
  • крај: референца на већ додељени објекат типа цхар *. Вредност енд функција поставља на следећи знак у стр након последњег важећег знака. Овај параметар такође може бити нулти показивач и у том случају се не користи.
  • основа: База интегралне вредности. Скуп важећих вредности за базу је (0, 2, 3,…, 35, 36).

стртолл () Повратна вредност

Функција стртолл () враћа:

  • дугачка дугачка инт вредност (која се конвертује из низа).
  • 0 ако није могла да се изврши ваљана конверзија.

Пример 1: Како функционише функција стртолл ()?

 #include #include #include using namespace std; int main() ( int base = 10; char numberString() = "13.5ab_1x"; char *end; long long int number; number = strtoll(numberString, &end, base); cout << "String value = " << numberString << endl; cout << "Long long int value = " << number << endl; cout << "End String = " << end << endl; strcpy(numberString, "13"); cout << "String value = " << numberString << endl; number = strtoll(numberString, &end, base); cout << "Long long int value = " << number << endl; if (*end) ( cout << end; ) else ( cout << "Null pointer"; ) return 0; )

Када покренете програм, излаз ће бити:

 Вредност низа = 13.5аб_1к Лонг лонг инт вредност = 13 Енд Стринг = .5аб_1к Вредност низа = 13 Лонг лонг инт вредност = 13 Нулл показивач

Важећа целобројна вредност за функцију стртолл () састоји се од:

  • Опционални знак + или -.
  • Префикс 0 за осминску базу (односи се само када је основа = 8 или 0).
  • Префикс 0к или 0Кс за хексадецималну базу (примењује се само када је база = 16 или 0).
  • Низ цифара и / или абецеда (ако је база већа од 10).

Важеће вредности за базу параметара су (0, 2, 3,…, 35, 36). Скуп важећих цифара за базу 2 је (0, 1), за базу 3 је (0, 1, 2) и тако даље.

За базе које почињу од 11 до 36, важеће цифре укључују абецеду. Скуп важећих цифара за базу 11 је (0, 1, …, 9, А, а), за базу 12 је (0, 1, …, 9, А, а, Б, б) и тако даље.

Пример 2: функција стртолл () са различитим базама

 #include #include using namespace std; int main() ( char *end; cout << "23ajz" << " to Long Long Int with base-7 = " << strtoll("23ajz", &end, 7) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-20 = " << strtoll("23ajz", &end, 20) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-36 = " << strtoll("23ajz", &end, 36) << endl; cout << "End String = " << end << endl << endl; return 0; )

Када покренете програм, излаз ће бити:

 23ајз до Лонг Лонг Инт са базом-7 = 17 Крајњи низ = ајз 23ајз до Лонг Лонг Инт са базом-20 = 17419 Крајњи низ = з 23ајз до Лонг Лонг Инт са базом-36 = 3512879 Крајњи низ =

Функција стртолл () игнорише све водеће размаке све док се не пронађе примарни не-размак.

Генерално, важећи целобројни аргумент за функцију стртолл () има следећи облик:

 (размак) (- | +) (0 | 0к) (алфанумерички знакови)

Затим, почев од овог знака, потребно је што више знакова који чине ваљану целобројну представу и претварају их у дугачку дугу инт вредност. Шта год је остало од низа након последњег важећег знака, занемарује се и нема утицаја на резултат.

Пример 3: функција стртолл () за водеће размаке и неважећу конверзију

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Long Long Int with base-11 = " << strtoll(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; cout << " 110bcd" << " to Long Long Int with base-2 = " << strtoll(" 110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Long Long Int with base-10 = " << strtoll("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

Када покренете програм, излаз ће бити:

 25акбз до Лонг Лонг Инт са базом-11 = 307 Крајњи низ = кбз 110бцд до Лонг Лонг Инт са базом-2 = 6 Крајњи низ = бцд ак110.97 до Лонг Лонг Инт са басе-10 = 0 Крајњи низ = ак110.97

Ако је основа 0, нумеричка основа се аутоматски одређује гледањем формата низа. Ако је префикс 0, основа је осминска (8). Ако је префикс 0к или 0Кс, основа је хексадецимална (16), иначе је база децимална (10).

Пример 4: функција стртолл () са базом 0

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "025x" << " to Long Long Int with base-0 = " << strtoll("025x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0xf1x" << " to Long Long Int with base-0 = " << strtoll("0xf1x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "15ab" << " to Long Long Int with base-0 = " << strtoll("15ab", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

Када покренете програм, излаз ће бити:

 025к до Лонг Лонг Инт са базом-0 = 21 Крајњи низ = к 0кф1к до Лонг Лонг Инт са базом-0 = 241 Крајњи низ = к 15аб до Лонг Лонг Инт са базом-0 = 15 Крајњи низ = аб

Занимљиви Чланци...