wcstoul, wcstoull
Определено в заголовочном файле <wchar.h> |
||
|---|---|---|
unsigned long wcstoul( const wchar_t* str, wchar_t** str_end, int base ); |
(с C95) (до C99) |
|
unsigned long wcstoul( const wchar_t * restrict str,
wchar_t ** restrict str_end, int base );
|
(с C99) | |
unsigned long long wcstoull( const wchar_t * restrict str,
wchar_t ** restrict str_end, int base );
|
(с C99) |
Интерпретирует значение целого без знака в широкой строке, на которую указывает str.
Пропускает любые символы пробела (как определено вызовом iswspace) до тех пор, пока не будет найден первый символ, не являющийся пробелом, затем берет как можно больше символов для формирования допустимого представления целого числа без знака в системе счисления по основанию n (где n=base). После чего преобразует их в целое значение. Допустимое значение целого числа без знака состоит из следующих частей:
- (необязательно) знак плюс или минус
- (необязательно) префикс (
0), указывающий на основание 8 (применяется только когда основание равно8или0) - (необязательно) префикс (
0xили0X), указывающий на основание 16 (применяется только когда основание равно16или0) - последовательность цифр
Набор допустимых значений для основания составляет {0,2,3,...,36}.. Набор допустимых цифр для целых чисел с основанием 2 равен {0,1},, для целых чисел с основанием 3 равен {0,1,2}, и так далее. Для оснований, больших чем 10, допустимые цифры включают в себя буквенные символы, начиная с Aa для целых чисел с основанием 11 и до Zz для целых чисел с основанием 36. Регистр символов игнорируется.
Дополнительные числовые форматы могут приниматься текущим установленным в C локалем.
Если значение base равно 0, числовое основание определяется автоматически: если префикс равен 0, основание равно 8, если префикс равен 0x или 0X, основание равно 16, в противном случае основание равно 10.
Если знак минус был частью входной последовательности, рассчитанное числовое значение из последовательности цифр отрицается, как если бы оно было получено с помощью унарного минуса в типе результата, что применяет правила переполнения целого без знака.
Функции устанавливает указатель, на который указывает str_end, на широкие символы, следующие за последним интерпретированным символом. Если str_end является нулевым указателем, он игнорируется.
Параметры
| str | - | указатель на завершающуюся нулём широкую строку для интерпретации |
| str_end | - | указатель на указатель на широкий символ. |
| base | - | основание интерпретируемого значения целого числа |
Возвращаемое значение
Целое значение, соответствующее содержимому str при успешном выполнении. Если преобразованное значение выходит за границы соответствующего типа возвращаемого значения, происходит ошибка диапазона, и возвращается ULONG_MAX или ULLONG_MAX. Если преобразование невозможно, возвращается 0.
Пример
#include <stdio.h>
#include <errno.h>
#include <wchar.h>
int main(void)
{
const wchar_t *p = L"10 200000000000000000000000000000 30 40";
printf("Parsing L'%ls':\n", p);
wchar_t *end;
for (unsigned long i = wcstoul(p, &end, 10);
p != end;
i = wcstoul(p, &end, 10))
{
printf("'%.*ls' -> ", (int)(end-p), p);
p = end;
if (errno == ERANGE){
printf("range error, got ");
errno = 0;
}
printf("%lu\n", i);
}
}Вывод:
Parsing '10 200000000000000000000000000000 30 40': '10' -> 10 ' 200000000000000000000000000000' -> range error, got 18446744073709551615 ' 30' -> 30 ' 40' -> 40
Ссылки
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.29.4.1.2 Функции wcstol, wcstoll, wcstoul и wcstoull (с. 429-430)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.24.4.1.2 Функции wcstol, wcstoll, wcstoul и wcstoull (с. 375-376)
См. также
|
(C99) |
преобразует строку байтов в целое число без знака (функция) |
|
(C95)(C99) |
преобразует широкую строку в целое значение (функция) |
Документация C++ для wcstoul, wcstoull |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/wide/wcstoul