Поделиться через


_strtoui64, _wcstoui64, _strtoui64_l, _wcstoui64_l

Преобразуют строку в значение unsigned __int64.

Синтаксис

unsigned __int64 _strtoui64(
   const char *strSource,
   char **endptr,
   int base
);
unsigned __int64 _wcstoui64(
   const wchar_t *strSource,
   wchar_t **endptr,
   int base
);
unsigned __int64 _strtoui64_l(
   const char *strSource,
   char **endptr,
   int base,
   _locale_t locale
);
unsigned __int64 _wcstoui64_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   int base,
   _locale_t locale
);

Параметры

strSource
Строка, завершающаяся символом NULL, для преобразования.

endptr
Указатель на символ, который останавливает сканирование.

base
Используемое числовое основание.

locale
Используемый языковой стандарт.

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

Функция _strtoui64 возвращает значение, представленное в строке strSource, кроме случаев, когда представление вызвало бы переполнение. В этом случае возвращается значение _UI64_MAX. Функция _strtoui64 возвращает 0, если преобразование не может быть выполнено.

_UI64_MAX определяется в LIMITS.H.

Если strSource имеет значение NULL или base имеет ненулевое значение и либо меньше 2, либо больше 36, то для errno устанавливается значение EINVAL.

Дополнительные сведения о кодах возврата см. в разделе errno, _doserrno_sys_errlistи _sys_nerr.

Замечания

Функция _strtoui64 преобразует strSource в unsigned __int64. _wcstoui64— это версия _strtoui64 с расширенными символами; ее аргумент strSource — строка расширенных символов. В остальном эти функции работают одинаково.

Обе функции перестают читать строку strSource при первом символе, которую они не могут распознать как часть числа. Это может быть конечный символ NULL, или первый числовый символ больше или равно base.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить его, ознакомьтесь с глобальным состоянием в CRT.

Сопоставления подпрограмм универсального текста

TCHAR.H Обычной _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcstoui64 _strtoui64 _strtoui64 _wcstoui64
_tcstoui64_l _strtoui64_l _strtoui64_l _wcstoui64_l

Параметр категории текущего языкового LC_NUMERIC стандарта определяет распознавание символа радикса в strSource; дополнительные сведения см. в разделе setlocale. Функции, не имеющие суффикса _l, используют текущий языковой стандарт; _strtoui64_l и _wcstoui64_l идентичны соответствующим функциям, которые не имеют суффикса _l, за исключением того, что они используют переданный им языковой стандарт. Дополнительные сведения см. в разделе Locale.

Если endptr это не NULLтак, указатель на символ, который остановил сканирование, хранится в расположении, на которое указывает endptr. Если не удается выполнить преобразование (не найдены допустимые цифры или указано недопустимое основание), значение strSource сохраняется в расположении, указанном endptr.

Функция _strtoui64 ожидает, что strSource указывает на строку следующего вида:

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits | letters]

Может whitespace состоять из пробелов и символов табуляции, которые игнорируются. digits — это одна или несколько десятичных цифр. letters являются одним или несколькими буквами "a" через "z" (или "A" через "Z"). Первый символ, который не соответствует этой форме, останавливает сканирование. Если base значение от 2 до 36, оно используется в качестве основы числа. Если base равно 0, то начальные символы строки, на которую указывает strSource, используются для определения основания. Если первый символ равен "0", а второй символ не является "x" или "X", строка интерпретируется как восьмеричное целое число. Если первый символ — 0, а второй символ равен x или X, строка интерпретируется как шестнадцатеричное целое число. Если первый символ — от 1 до 9, строка интерпретируется как десятичное целое число. Буквам от а до z (или от А до Z) присваиваются значения от 10 до 35. Допускаются только буквы с присвоенными значениями меньше base. Первый символ за пределами диапазона основания останавливает сканирование. Например, если значение base равно 0 и первый считанный символ — "0", то предполагается восьмеричное целое число и символ "8" или "9" останавливает чтение.

Требования

Функция Обязательный заголовок
_strtoui64 <stdlib.h>
_wcstoui64 <stdlib.h> или <wchar.h>
_strtoui64_l <stdlib.h>
_wcstoui64_l <stdlib.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_strtoui64.c
#include <stdio.h>

unsigned __int64 atoui64(const char *szUnsignedInt) {
   return _strtoui64(szUnsignedInt, NULL, 10);
}

int main() {
   unsigned __int64 u = atoui64("18446744073709551615");
   printf( "u = %I64u\n", u );
}
u = 18446744073709551615

См. также

Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Строки в числовые функции значений
strtod, _strtod_l, wcstod, _wcstod_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l
atof, _atof_l, _wtof, _wtof_l