Namespaces
Variants

wcstoimax, wcstoumax

From cppreference.net
< c ‎ | string ‎ | wide
Definido en el encabezado <inttypes.h>
intmax_t wcstoimax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(desde C99)
uintmax_t wcstoumax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(desde C99)

Interpreta un valor entero sin signo en la cadena ancha apuntada por nptr .

Descarta cualquier carácter de espacio en blanco (identificado llamando a iswspace ) hasta encontrar el primer carácter que no sea un espacio, luego toma tantos caracteres como sea posible para formar una representación válida de número entero sin signo en base-n (donde n= base ) y los convierte a un valor entero. El valor entero sin signo válido consta de las siguientes partes:

  • (opcional) signo más o menos
  • (opcional) prefijo ( 0 ) que indica base octal (solo aplica cuando la base es 8 o 0 )
  • (opcional) prefijo ( 0x o 0X ) que indica base hexadecimal (solo aplica cuando la base es 16 o 0 )
  • una secuencia de dígitos

El conjunto de valores válidos para la base es {0, 2, 3, ..., 36} . El conjunto de dígitos válidos para enteros de base- 2 es {0, 1} , para enteros de base- 3 es {0, 1, 2} , y así sucesivamente. Para bases mayores que 10 , los dígitos válidos incluyen caracteres alfabéticos, comenzando desde Aa para enteros de base- 11 , hasta Zz para enteros de base- 36 . Se ignora la distinción entre mayúsculas y minúsculas.

Se pueden aceptar formatos numéricos adicionales según la configuración regional de C actualmente instalada locale .

Si el valor de base es 0 , la base numérica se detecta automáticamente: si el prefijo es 0 , la base es octal, si el prefijo es 0x o 0X , la base es hexadecimal, de lo contrario la base es decimal.

Si el signo menos formaba parte de la secuencia de entrada, el valor numérico calculado a partir de la secuencia de dígitos se niega como si fuera mediante unary minus en el tipo de resultado, lo cual aplica las reglas de wraparound de enteros sin signo.

La función establece el puntero apuntado por endptr para que apunte al carácter ancho después del último carácter interpretado. Si endptr es un puntero nulo, se ignora.

Contenidos

Parámetros

nptr - puntero a la cadena ancha terminada en nulo que se interpretará
endptr - puntero a un puntero a un carácter ancho.
base - base del valor entero interpretado

Valor de retorno

Valor entero correspondiente al contenido de str en caso de éxito. Si el valor convertido queda fuera del rango del tipo de retorno correspondiente, ocurre un error de rango y se retorna INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX , o 0 según corresponda. Si no se puede realizar ninguna conversión, se retorna 0 .

Ejemplo

#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));
}

Salida:

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

Referencias

  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.8.2.4 Las funciones wcstoimax y wcstoumax (p: 220)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.8.2.4 Las funciones wcstoimax y wcstoumax (p: 201)

Véase también

convierte una cadena de bytes a intmax_t o uintmax_t
(función)
(C95) (C99)
convierte una cadena ancha a un valor entero
(función)
(C95) (C99)
convierte una cadena ancha a un valor entero sin signo
(función)
Documentación de C++ para wcstoimax , wcstoumax