std::stoul, std::stoull
Definido en el archivo de encabezado <string> | ||
unsignedlong stoul(conststd::string& str, std::size_t* pos =0, int base =10); unsignedlong stoul(conststd::wstring& str, std::size_t* pos =0, int base =10); | (1) | (desde C++11) |
unsignedlonglong stoull(conststd::string& str, std::size_t* pos =0, int base =10); unsignedlonglong stoull(conststd::wstring& str, std::size_t* pos =0, int base =10); | (2) | (desde C++11) |
Interpreta un valor entero sin signo en la cadena str
.
La función descarta cualquier carácter en blanco hasta que se encuentra el primer carácter que no es carácter en blanco. Entonces toma tantos caracteres como sea posible para formar una representación válida de número entero sin signo de base-n (donde n=base) y los convierte a un valor entero . El valor entero sin signo válido consiste en las siguientes partes: Ninguna
- (opcional) Prefijo (
0
) que indica la base octal (se aplica cuando la base es 8) - (opcional) Prefijo (
0x
o0X
) que indica la base hexadecimal (se aplica cuando la base es 16) - Una secuencia de dígitos
El conjunto de valores válidos para base es {0,2,3,...,36}. El conjunto de dígitos válidos para enteros de base 2 es 01
, para enteros de base 3 es 012
, y así sucesivamente. Para bases mayores que 10
, los dígitos válidos incluyen caracteres alfabéticos, empezando desde Aa
para enteros de base 11, hasta Zz
para enteros de base 36. Los caracteres alfabéticos pueden ser minúsculas o mayúsculas.
Pueden aceptarse formatos numéricos adicionales por la configuración regional de C actualmente instalada.
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 era parte de la secuencia de entrada, el valor numérico calculado a partir de la secuencia de dígitos se niega como si lo fuera por el menos unario en el tipo del resultado , que aplica las reglas del desbordamiento de enteros sin signo (unsigned integer wraparound).
Si pos
no es un puntero nulo, entonces un puntero ptr
, interno a las funciones de conversión, recibirá la dirección del primer carácter no convertido en str.c_str(), y el índice de ese carácter se calculará y almacenará en *pos
, dando el número de caracteres que se procesaron por la conversión.
Contenido |
[editar]Parámetros
str | - | La cadena a convertir. |
pos | - | Dirección de un entero para almacenar el número de caracteres procesados. |
base | - | La base numérica. |
[editar]Valor de retorno
La cadena convertida al tipo entero sin signo especificado.
[editar]Excepciones
- std::invalid_argument si la conversión no se pudo realizar.
- std::out_of_range si el valor convertido caería fuera del rango del tipo del resultado, o si la función subyacente (std::strtoul o std::strtoull) establece errno a ERANGE.
[editar]Véase también
(C++11)(C++11)(C++11) | Convierte una cadena a un entero con signo (función) |
(C++11)(C++11)(C++11) | Convierte una cadena en un valor de punto flotante (función) |