Namespaces
Variants

wcstoimax, wcstoumax

From cppreference.net
< c ‎ | string ‎ | wide
Определено в заголовочном файле <inttypes.h>
intmax_t wcstoimax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(начиная с C99)
uintmax_t wcstoumax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(начиная с C99)

Интерпретирует целое значение без знака в широкой строке, на которую указывает nptr .

Отбрасывает любые пробельные символы (определяемые вызовом 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 - система шестнадцатеричная, в остальных случаях система десятичная.

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

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

Содержание

Параметры

nptr - указатель на нуль-терминированную широкую строку для интерпретации
endptr - указатель на указатель на широкий символ
base - base интерпретируемого целочисленного значения

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

Целочисленное значение, соответствующее содержимому str при успешном преобразовании. Если преобразованное значение выходит за пределы диапазона соответствующего возвращаемого типа, возникает ошибка диапазона и возвращается INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX или 0 в зависимости от ситуации. Если преобразование не может быть выполнено, 0 возвращается.

Пример

#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
int main(void)
{
  wchar_t* endptr;
  wprintf(L"%ld\n", wcstoimax(L" -123junk", &endptr, 10)); /* base 10                    */
  wprintf(L"%ld\n", wcstoimax(L"11111111", &endptr, 2));   /* base 2                     */
  wprintf(L"%ld\n", wcstoimax(L"XyZ", &endptr, 36));       /* base 36                    */
  wprintf(L"%ld\n", wcstoimax(L"010", &endptr, 0));        /* octal auto-detection       */
  wprintf(L"%ld\n", wcstoimax(L"10", &endptr, 0));         /* decimal auto-detection     */
  wprintf(L"%ld\n", wcstoimax(L"0x10", &endptr, 0));       /* hexadecimal auto-detection */
  /* range error             */
  /* LONG_MAX+1 --> LONG_MAX */
  errno = 0;
  wprintf(L"%ld\n", wcstoimax(L"9223372036854775808", &endptr, 10));
  wprintf(L"%s\n", strerror(errno));
}

Вывод:

-123
255
44027
8
10
16
9223372036854775807
Numerical result out of range

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.8.2.4 Функции wcstoimax и wcstoumax (стр. 220)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.8.2.4 Функции wcstoimax и wcstoumax (стр. 201)

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

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