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

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

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

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

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

wcstoul () прототип

 беззнаковое длинное wcstoul (const wchar_t * str, wchar_t ** str_end, int base);

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

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

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

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

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

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

  • беззнаковое длинное целое значение (которое конвертируется из строки).
  • 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 ᚶ Беззнаковое длинное целое значение = 101 Конечная строка = aa U Строковое значение = 59 Беззнаковое длинное целое значение = 59 Конечная строка =

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

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

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

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

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

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

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

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