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

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

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

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

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

прототип wcstoll ()

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

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

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

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

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

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

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

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

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

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

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

 Значення рядка = 41ŦĤxx Long Long Int значення = 41 End String = ŦĤxx Значення рядка = 127 Long Long Int = 127 End String =

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

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

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

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

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

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

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

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

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

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

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

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

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

 205Ϣx до Long Long Int з base-5 = 10 End String = 5Ϣx xƜz201 до Long Long Int з base-12 = 0 End String = xƜz201

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

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

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

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

 0539Ẅ до Long Long Int з base-0 = 43 End String = 9Ẅ 0xa31 ע до Long Long Int з base-0 = 2609 End String = End 119x ؏ до Long Long Int з base-0 = 119 End String = x ؏

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