C ++ wcstoull () - Стандартна бібліотека C ++

Функція wcstoull () в C ++ інтерпретує вміст широкого рядка як цілісний номер без підпису зазначеної бази і повертає його значення як беззнаковий long long int.

Функція wcstoull () також встановлює вказівник, який вказує на перший символ після останнього дійсного символу широкого рядка, якщо такий є, інакше вказівник встановлюється як нуль.

 Для основи 10 і широкого рядка L "29hi $" Дійсна числова частина -> 29 Перший символ після дійсної числової частини -> h

Це визначається у файлі заголовка.

прототип wcstoull ()

 непідписаний довгий wcstoull (const wchar_t * str, wchar_t ** str_end, int base);

Функція wcstoull () приймає в якості параметра широкий рядок str, вказівник на широкий символ str_end та ціле значення - base.

Потім він інтерпретує вміст широкого рядка як безцільне ціле число заданої бази і повертає непідписане довге довге значення int.

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

  • str: Широкий рядок, що представляє ціле число без підпису.
  • str_end: вказівник на вказівник на широкий символ. Значення str_end встановлюється функцією для наступного символу в str після останнього дійсного символу. Цей параметр також може бути нульовим покажчиком, і в цьому випадку він не використовується.
  • основа: основа інтегральної величини. Набір допустимих значень для бази дорівнює (0, 2, 3,…, 35, 36).

wcstoull () Повертається значення

Функція wcstoull () повертає:

  • непідписане long long int значення (яке перетворюється із рядка).
  • 0, якщо не вдалося виконати дійсне перетворення.

Приклад 1: Як працює функція wcstoull ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Коли ви запускаєте програму, результат буде:

 Значення рядка = 101aa ᚶ Беззнакове довге довге внутрішнє значення = 101 кінцевий рядок = aa value Значення рядка = 59 Непідписане довге довге внутрішнє значення = 59 кінцеве рядкове =

Дійсне ціле значення для функції wcstoull () складається з:

  • Необов’язковий знак + або -.
  • Префікс 0 для вісімкової основи (застосовується лише тоді, коли основа = 8 або 0).
  • Префікс 0x або 0X для шістнадцяткової бази (застосовується лише тоді, коли база = 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: функція wcstoull () з різними основами

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Коли ви запускаєте програму, результат буде:

 311bzϾϿ до Непідписаного довгого довгого Int з базою-5 = 81 Кінцева рядка = bzϾϿ 311bzϾϿ до Беззнакового довгого довгого Int з base-12 = 5351 Кінцева рядок = zϾϿ 311bzns до Беззнакового довгого довгого Int з base-36 = 5087231 Кінцева рядок = ϾϿ

Функція wcstoull () ігнорує всі провідні пробіли, поки не буде знайдено основний непробіл.

Загалом, допустимий цілочисельний аргумент для функції wcstoull () має такий вигляд:

 (пробіли) (- | +) (0 | 0x) (буквено-цифрові символи)

Потім, починаючи з цього символу, потрібно якомога більше символів, які утворюють дійсне цілочисельне подання і перетворюють їх у беззнакове довге значення int. Все, що залишилось від рядка після останнього дійсного символу, ігнорується і не впливає на результат.

Приклад 3: Функція wcstoull () для пропуску пробілів та недійсного перетворення

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Long Int with base-5 = " << wcstoull(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Long Int with base-12 = " << wcstoull(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Коли ви запускаєте програму, результат буде:

 205Ϣx до Непідписаного довгого довгого Int з базою-5 = 10 Кінцева рядка = 5Ϣx xƜz201 до Беззнакового довгого довгого Int з base-12 = 0 Кінцева рядка = xƜz201

Якщо основа дорівнює 0, числова база визначається автоматично, переглядаючи формат рядка. Якщо префікс дорівнює 0, основа - восьмерична (8). Якщо префікс 0x або 0X, основа є шістнадцятковою (16), в іншому випадку база є десятковою (10).

Приклад 4: Функція wcstoull () з базою 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Коли ви запускаєте програму, результат буде:

 0539Ẅ до Непідписаного довгого довгого Int з базою-0 = 43 Кінцева рядка = 9Ẅ 0xa31 ע до Беззнакового довгого довгого Int з базою-0 = 2609 Кінцева рядок = ע 119x ؏ до Беззнакового довгого довгого Int з базою-0 = 119 Кінцева рядок = x ؏

Цікаві статті...