wcstoimax, wcstoumax
Defined in header <inttypes.h> |
||
|---|---|---|
intmax_t wcstoimax( const wchar_t *restrict nptr,
wchar_t **restrict endptr, int base );
|
(since C99) | |
uintmax_t wcstoumax( const wchar_t *restrict nptr,
wchar_t **restrict endptr, int base );
|
(since 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 locale.
Если значение base равно 0, числовая база определяется автоматически: если префикс 0, база равна восьмеричной, если префикс 0x или 0X, база равна шестнадцатеричной, в противном случае база равна десятичной.
Если знак минус входил в последовательность входных данных, числовое значение, рассчитанное по последовательности цифр, отрицается, как если бы оно было получено с помощью унарного минуса в типе результата, который применяет правила об обходе целых чисел без знака.
Функции устанавливают указатель, на который указывает endptr, чтобы он указывал на широкий символ, следующий за последним интерпретированным символом. Если endptr является нулевым указателем, он игнорируется.
Параметры
| nptr | - | указатель на завершающуюся нулём строку с широкими символами для интерпретации |
| endptr | - | указатель на указатель на широкий символ. |
| 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)
См. также
|
(C99)(C99) |
преобразует строку байтов в intmax_t или uintmax_t (функция) |
|
(C95)(C99) |
преобразует строку с широкими символами в целое значение (функция) |
|
(C95)(C99) |
преобразует строку с широкими символами в значение целого числа без знака (функция) |
Документация C++ для wcstoimax, wcstoumax |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/wide/wcstoimax