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

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

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

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

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

прототип wcstol ()

 довгий wcstol (const wchar_t * str, wchar_t ** str_end, int base);

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

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

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

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

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

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

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

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

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

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

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

  • Необов’язковий знак + або -.
  • Префікс 0 для вісімкової основи (застосовується лише тоді, коли основа = 8 або 0).
  • Префікс 0x або 0X для шістнадцяткової бази (застосовується лише тоді, коли база = 16 або 0).
  • Послідовність цифр та / або алфавітів (якщо основа більше 10).

Допустимими значеннями для бази параметрів є (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: функція wcstol () з різними основами

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

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

 311bzϾϿ до Long Int з base-5 = 81 Кінцевий рядок = bzϾϿ 311bzϾϿ до Long Int з base-5 = 5351 Кінцевий рядок = zϾϿ 311bzϾϿ до Long Int з base-5 = 5087231 Кінцевий рядок = ϾϿ

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

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

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

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

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

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

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

 205Ϣx до Long Int з base-5 = 10 Кінцева рядка = 5Ϣx xƜz201 до Long Int з base-12 = 0 Кінцева рядок = xƜz201

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

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

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

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

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

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