Spec-Zone.ru › C

wcstol, wcstoll

Определено в заголовочном файле <wchar.h>
long      wcstol( const wchar_t * str, wchar_t ** str_end, int base );
(с C95)
(до C99)
long      wcstol( const wchar_t * restrict str, wchar_t ** restrict str_end,
                  int base );
(с C99)
long long wcstoll( 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 локалем.

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

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

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

Параметры

str - указатель на завершающую нулём широкую строку, подлежащую интерпретации
str_end - указатель на указатель на широкий символ
base - основание интерпретируемого целого значения

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

Целое значение, соответствующее содержимому str при успехе. Если преобразованное значение выходит за пределы диапазона соответствующего типа возврата, происходит ошибка диапазона и возвращается LONG_MAX, LONG_MIN, LLONG_MAX или LLONG_MIN. Если преобразование не может быть выполнено, возвращается ​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 (long i = wcstol(p, &end, 10);
         p != end;
         i = wcstol(p, &end, 10))
    {
        printf("'%.*ls' -> ", (int)(end-p), p);
        p = end;
        if (errno == ERANGE){
            printf("range error, got ");
            errno = 0;
        }
        printf("%ld\n", i);
    }
}

Вывод:

Parsing L'10 200000000000000000000000000000 30 -40':
'10' -> 10
' 200000000000000000000000000000' -> range error, got 9223372036854775807
' 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)

См. также

strtolstrtoll
(C99)
преобразует строку байтов в целое значение
(функция)
wcstoulwcstoull
(C95)(C99)
преобразует широкую строку в целое беззнаковое значение
(функция)
Документация C++ для wcstol, wcstoll

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

Spec-Zone.ru

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