std::stoul, std::stoull
| Definido en el encabezado <string>
|
||
unsigned long stoul ( const std::string& str,
std::size_t* pos = nullptr, int base = 10 );
|
(1) | (desde C++11) |
unsigned long stoul ( const std::wstring& str,
std::size_t* pos = nullptr, int base = 10 );
|
(2) | (desde C++11) |
unsigned long long stoull( const std::string& str,
std::size_t* pos = nullptr, int base = 10 );
|
(3) | (desde C++11) |
unsigned long long stoull( const std::wstring& str,
std::size_t* pos = nullptr, int base = 10 );
|
(4) | (desde C++11) |
Interpreta un valor entero sin signo en la cadena str.
Sea ptr un puntero interno (a las funciones de conversión) de tipo char* (1,3) o wchar_t* (2,4), según corresponda.
std::strtoul(str.c_str(), &ptr, base).std::wcstoul(str.c_str(), &ptr, base).std::strtoull(str.c_str(), &ptr, base).std::wcstoull(str.c_str(), &ptr, base).Descarta cualquier carácter de espacio en blanco (identificado llamando a std::isspace) hasta encontrar el primer carácter que no sea espacio en blanco, luego toma tantos caracteres como sea posible para formar una representación de número entero sin signo válida en base-n (donde n=) y los convierte en un valor entero. El valor entero sin signo válido consta de las siguientes partes:
base
- (opcional) signo más o menos
- (opcional) prefijo (
0) que indica base octal (se aplica solo cuando la base es8o0) - (opcional) prefijo (
0xo0X) que indica base hexadecimal (se aplica solo cuando la base es16o0) - 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 en base-2 es {0, 1}, para enteros en 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 en base-11, hasta Zz para enteros en base-36. Las mayúsculas y minúsculas de los caracteres se ignoran.
La locale C instalada actualmente puede aceptar formatos numéricos adicionales.
Si el valor de es base0, 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 fue 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 menos unario en el tipo de resultado, lo que aplica reglas de desbordamiento de enteros sin signo.
Si pos no es un puntero nulo, entonces ptr 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 fueron procesados por la conversión.
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 |
Valor de retorno
La cadena convertida al tipo de entero sin signo especificado.
Excepciones
- std::invalid_argument si no se pudo realizar ninguna conversión.
- std::out_of_range si el valor convertido caería fuera del rango del tipo de resultado o si la función subyacente ( std::strtoul o std::strtoull ) establece errno a ERANGE .
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2009 | C++11 |
std::out_of_range
no sería lanzado si
std::strtoul o std::strtoull establece errno a ERANGE |
lanzará |
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 a un valor de punto flotante
(función) |