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

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

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

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

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

прототип wcstoul ()

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

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

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

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

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

wcstoul () Повернене значення

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

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

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

 #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 value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Значення рядка = 101aa ᚶ Беззнакове значення Long Int = 101 Кінцевий рядок = aa value Значення рядка = 59 Незначене значення Long Int = 59 Кінцевий рядок =

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

  • Необов’язковий знак + або -.
  • Префікс 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: функція wcstoul () з різними основами

 #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 Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

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

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

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

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

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

Все, що залишилось від рядка після останнього дійсного символу, ігнорується і не впливає на результат.

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

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

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

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

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

Приклад 4: Функція wcstoul () з базою 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 Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(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 ؏

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