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

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

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

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

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

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

 непотписан лонг лонг инт стртоулл (цонст цхар * стр, цхар ** енд, инт басе);

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

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

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

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

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

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

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

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

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

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

 Вредност низа = 231ак12 Непотписана дугачка дугачка инт вредност = 231 Крај низа = ак12 Вредност низа = 231 Непотписана дугачка дугачка инт вредност = 231 Нулл показивач

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

  • Опционални знак + или -.
  • Префикс 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 << "148ax" << " to Unsigned Long Long Int with base-5 = " << strtoll("148ax", &end, 5) << endl; cout << "End String = " << end << endl << endl; cout << "148ax" << " to Unsigned Long Long Int with base-15 = " << strtoll("148ax", &end, 15) << endl; cout << "End String = " << end << endl << endl; cout << "148ax" << " to Unsigned Long Long Int with base-35 = " << strtoll("148ax", &end, 35) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 148ак до Непотписани Лонг Лонг Инт са басе-5 = 9 Енд Стринг = 8ак 148ак до Непотписани Лонг Лонг Инт са басе-5 = 9 Енд Стринг =

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

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

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

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

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

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Unsigned Long Long Int with base-11 = " << strtoull(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; /* Negative value is converted to unsigned long long int type */ cout << " -110bcd" << " to Unsigned Long Long Int with base-2 = " << strtoull(" -110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Unsigned Long Long Int with base-10 = " << strtoull("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 25акбз у Непотписани Лонг Лонг Инт са базом-11 = 307 Крајњи низ = кбз -110бцд у Непотписани Лонг Лонг Инт са басе-2 = 18446744073709551610 Крајњи низ = бцд ак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 << "017x" << " to Unsigned Long Long Int with base-0 = " << strtoull("017x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0x1cg" << " to Unsigned Long Long Int with base-0 = " << strtoull("0x1cg", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "70sxz" << " to Unsigned Long Long Int with base-0 = " << strtoull("70sxz", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 017к у Непотписани Лонг Лонг Инт са базом-0 = 15 Крајњи низ = к 0к1цг ​​у Непотписани Лонг Лонг Инт са базом-0 = 28 Крајњи низ = г 70скз у Непотписани Лонг Лонг Инт са базом-0 = 70 Крајњи низ = скз

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