Spec-Zone.ru › C

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 или 0)
  • (необязательно) префикс (0x или 0X), указывающий на шестнадцатеричную систему счисления (применяется, только если основание равно 16 или 0)
  • последовательность цифр

Допустимые значения основания — {0, 2, 3, ..., 36}. Допустимые цифры для целых чисел в системе счисления с основанием 2 — {0, 1}, для целых чисел с основанием 3 — {0, 1, 2} и так далее. Для оснований, больших 10, допустимые цифры включают буквенные символы: от Aa для целых чисел с основанием 11 до Zz для целых чисел с основанием 36. Регистр символов не учитывается.

Текущая установленная локаль C locale может допускать дополнительные числовые форматы.

Если значение base равно 0, основание системы счисления определяется автоматически: если префикс — 0, основание восьмеричное; если префикс — 0x или 0X, основание шестнадцатеричное; в противном случае основание десятичное.

Если во входной последовательности присутствовал знак минус, числовое значение, вычисленное по последовательности цифр, меняет знак, как при применении унарного минуса к типу результата; при этом применяются правила беззнакового циклического переполнения.

Функции устанавливают указатель, на который указывает 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)

См. также

strtoul strtoull
(C99)
преобразует байтовую строку в значение беззнакового целого числа
(функция)
wcstolwcstoll
(C95)(C99)
преобразует широкую строку в значение целого числа
(функция)
Документация C++ для wcstoul, wcstoull

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/string/wide/wcstoul

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API