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

Функцията strtoull () в C ++ интерпретира съдържанието на низ като интегрално число на посочената основа и връща стойността му като неподписан long long int.

Функцията strtoull () в C ++ интерпретира съдържанието на низ като интегрално число на посочената основа и връща стойността му като неподписан long long int.

Тази функция също така задава указател, който да сочи към първия символ след последния валиден символ на низа, ако има такъв, в противен случай указателят е зададен за нула.

 За основа 10 и низа "41aac" Валидна числова част -> 42 Първи знак след валидна цифрова част -> a

strtoull () прототип (като стандарт C ++ 11)

 неподписан long long int strtoull (const char * str, char ** end, int base);

Функцията strtoull () приема низ, указател към символ и целочислена стойност - база като свой параметър, интерпретира съдържанието на низ като интегрален номер на дадената база и връща неподписана дълга дълга int стойност.

Тази функция е дефинирана в заглавния файл.

strtoull () Параметри

  • str: Низ с представяне на интегрално число.
  • end:Препратка към вече разпределен обект от тип char *. Стойността на end се задава от функцията на следващия символ в str след последния валиден символ. Този параметър може да бъде и нулев указател, в който случай той не се използва.
  • base:Основата на интегралната стойност. Наборът от валидни стойности за база е (0, 2, 3,…, 35, 36).

strtoull () Върната стойност

Функцията strtoull () връща:

  • неподписана long long int стойност (която се преобразува от низа).
  • 0, ако не може да се извърши валидно преобразуване.

Пример 1: Как работи функцията strtoull ()?

 #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; )

Когато стартирате програмата, изходът ще бъде:

 Стойност на низа = 231ax12 Неподписана дълга дълга int стойност = 231 Краен низ = ax12 Стойност на низа = 231 Неподписана дълга дълга int стойност = 231 Нулев указател

Валидна целочислена стойност за функцията strtoull () се състои от:

  • Незадължителен знак + или -.
  • Префикс 0 за осмична основа (важи само когато основа = 8 или 0).
  • Префикс 0x или 0X за шестнадесетична основа (важи само когато base = 16 или 0).
  • Поредица от цифри и / или азбуки (ако основата е по-голяма от 10).

Ако аргументът съдържа знак минус (-) в началото, отрицателното число се преобразува неявно в неподписан дълъг дълъг тип int, който е положително число.

Валидните стойности за базата на параметрите са (0, 2, 3, …, 35, 36). Наборът от валидни цифри за основа 2 е (0, 1), за основа 3 е (0, 1, 2) и т.н. За бази, започващи от 11 до 36, валидните цифри включват азбуки. Наборът от валидни цифри за база 11 е (0, 1, …, 9, A, a), за база 12 е (0, 1, …, 9, A, a, B, b) и т.н.

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

 #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; )

Когато стартирате програмата, изходът ще бъде:

 148ax към Unsigned Long Long Int с base-5 = 9 End String = 8ax 148ax до Unsigned Long Long Int с base-15 = 4405 End String = x 148ax към Unsigned Long Long Int с base-35 = 1682308 End String =

Функцията strtoull () игнорира всички водещи интервали, докато не бъде намерен основният небел интервал.

По принцип валиден аргумент от цяло число за функцията strtoull () има следната форма:

 (празно пространство) (- | +) (0 | 0x) (буквено-цифрови знаци)

След това, започвайки от този знак, са необходими колкото се може повече символи, които формират валидно цяло число и ги преобразуват в дълга дълга int стойност. Всичко, което е останало от низа след последния валиден знак, се игнорира и няма ефект върху резултата.

Пример 3: Функция strtoull () за водещи интервали, минус и невалидно преобразуване

 #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; )

Когато стартирате програмата, изходът ще бъде:

 25axbz към Unsigned Long Long Int с base-11 = 307 End String = xbz -110bcd до Unsigned Long Long Int с base-2 = 18446744073709551610 End String = bcd ax110.97 до Unsigned Long Long Int с base-10 = 0 End String = брадва110.97

Ако основата е 0, числовата база се определя автоматично, като се гледа форматът на низа. Ако префиксът е 0, основата е осмична (8). Ако префиксът е 0x или 0X, основата е шестнадесетична (16), в противен случай основата е десетична (10).

Пример 4: функция strtoull () с основа 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; )

Когато стартирате програмата, изходът ще бъде:

 017x към неподписан дълъг дълъг Int с основа-0 = 15 краен низ = x 0x1cg до неподписан дълъг дълъг Int с основа-0 = 28 краен низ = g 70sxz до неподписан дълъг дълъг Int с основа-0 = 70 краен низ = sxz

Интересни статии...