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

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

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

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

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

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

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

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

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

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

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

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

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

Пример 1: Како стртол () ради у Ц ++?

 #include #include using namespace std; int main() ( int base = 10; char str() = "27ab_1x"; char *end; long int num; num = strtol(str, &end, base); cout << "Number in String = " << str << endl; cout << "Number in Long Int = " << num << endl; cout << "End String = " << end << endl << endl; // the pointer to invalid characters can be null strcpy(str, "27"); cout << "Number in String = " << str << endl; num = strtol(str, &end, base); cout << "Number in Long Int = " << num << endl; if (*end) ( cout << end; ) else ( cout << "Null pointer"; ) return 0; ) 

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

 Број у низу = 27аб_1к Број у дугом Инт = 27 Крајњи низ = аб_1к Број у низу = 27 Број у дугом Инт = 27 Нулл показивач

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

  • Опционални знак + или -.
  • Префикс 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 #include using namespace std; int main() ( char *end; cout << "128bz" << " to Long Int with base-5 = " << strtol("128bxz", &end, 5) << endl; cout << "End String = " << end << endl << endl; cout << "128bz" << " to Long Int with base-12 = " << strtol("128bxz", &end, 12) << endl; cout << "End String = " << end << endl << endl; cout << "128bz" << " to Long Int with base-36 = " << strtol("128bxz", &end, 36) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 128бз до Лонг Инт са басе-5 = 7 Енд Стринг = 8бкз 128бз до Лонг Инт са басе-12 = 2123 Енд Стринг = кз 128бз до Лонг Инт са басе-36 = 64214135 Енд Стринг = 

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

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

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

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

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

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Long Int with base-11 = " << strtol(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; cout << " 110bcd" << " to Long Int with base-2 = " << strtol(" 110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Long Int with base-10 = " << strtol("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 << "0128ai" << " to Long Int with base-0 = " << strtol("0128ai", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0x15axzz" << " to Long Int with base-0 = " << strtol("0x15axzz", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "23dfl" << " to Long Int with base-0 = " << strtol("23dfl", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

0128аи на Лонг Инт са базом-0 = 10 Крајњи низ = 8аи 0к15акзз на Лонг Инт са базом-0 = 346 Крајњи низ = кзз 23дфл на Лонг Инт са базом-0 = 23 Крајњи низ = дфл 

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