Namespaces
Variants

wcstol, wcstoll

From cppreference.net
< c ‎ | string ‎ | wide
Определено в заголовочном файле <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 ) до первого непробельного символа, затем принимает максимально возможное количество символов, формирующих корректное base-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 - 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)

Смотрите также

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