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

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

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

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

Это определено в заголовочном файле.

wcstoull () прототип

 unsigned long wcstoull (const wchar_t * str, wchar_t ** str_end, int base);

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

Затем он интерпретирует содержимое широкой строки как целое число без знака данной базы и возвращает значение unsigned long long int.

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

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

wcstoull () Возвращаемое значение

Функция wcstoull () возвращает:

  • значение типа unsigned 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 ᚶ Unsigned Long Long Int value = 101 End String = aa ᚶ String value = 59 Unsigned Long Long Int value = 59 End String =

Допустимое целочисленное значение для функции wcstoull () состоит из:

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

Если аргумент содержит знак минус (-) в начале, отрицательное число неявно преобразуется в тип unsigned long long 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ϾϿ в Unsigned Long Long Int с base-5 = 81 End String = bzϾϿ 311bzϾϿ в Unsigned Long Long Int с base-12 = 5351 End String = zϾϿ 311bzϾϿ в Unsigned Long Long Int с base-36 = 5087231 End String = ϾϿ

Функция wcstoull () игнорирует все начальные пробельные символы до тех пор, пока не будет найден основной непробельный символ.

В общем, действительный целочисленный аргумент для функции wcstoull () имеет следующий вид:

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

Затем, начиная с этого символа, он берет как можно больше символов, которые формируют допустимое целочисленное представление, и преобразует их в значение типа unsigned long 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 до Unsigned Long Long Int с base-5 = 10 End String = 5Ϣx xƜz201 до Unsigned Long Long Int с base-12 = 0 End String = 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Ẅ в Unsigned Long Long Int с base-0 = 43 End String = 9Ẅ 0xa31 ע в Unsigned Long Long Int с base-0 = 2609 End String = ע 119x ؏ в Unsigned Long Long Int с base-0 = 119 End String = x ؏

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