logo

función std::stol en C++

En este artículo, aprenderá sobre la función std::stol en C++ con su sintaxis y ejemplos.

¿Qué es std::stol()?

El Biblioteca de plantillas estándar (STL) en C++ incluye el std::stol() función, que está hecha específicamente para convertir cadenas a enteros largos . Esta función es especialmente útil cuando se trabaja con entradas del usuario o se leen datos de fuentes externas, donde la entrada generalmente se proporciona en formato de cadena. Devuelve el entero largo equivalente después de recibir una cadena como entrada. Se lanza una excepción de tipo std::invalid_argument o std::out_of_range si la conversión no es posible o si la cadena de entrada contiene caracteres que no forman parte de un número válido.

Sintaxis:

Tiene la siguiente sintaxis:

long std::stol(const std::string& str, size_t* pos = 0, int base = 10);

cadena: El texto que debe cambiarse a un número entero largo.

Pos: El índice del primer carácter no convertido de la cadena, almacenado como un puntero a un objeto size_t. Si no es necesario, este parámetro opcional se puede establecer en nullptr.

base: La base numérica de la conversión. Diez es el valor predeterminado.

Valor de retorno: La función devuelve el valor numérico analizado a partir de la cadena de entrada como un entero largo.

Excepciones: La función genera una excepción si la conversión no se puede completar o si los caracteres de la cadena de entrada no son válidos. Si no se pudo realizar ninguna conversión, las posibles excepciones son std::argumento_inválido y std::fuera_de_rango si el valor convertido es mayor que el rango representable durante un tiempo largo.

Casos de uso:

    Procesamiento de entradas por parte de los usuarios:

std::stol() Es útil para transformar la entrada numérica que se recibe de los usuarios en formato de cadena en un tipo numérico para que pueda procesarse más.

    Archivo de entrada/salida:

Leer datos numéricos en archivos que contienen cadenas como representación de los datos.

    Validación de datos:

La validación de datos implica confirmar que las entradas del usuario representan con precisión números largos validándolos y verificándolos.

Programa de ejemplo 1:

Tomemos un ejemplo para ilustrar el uso de función std::stol en C++.

 #include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; } 

Producción:

función std::stol en C++

Explicación:

    Inicialización:
    • Una variable de cadena llamada cadenanumérica se inicializa con el valor '12345' al comienzo del programa.
    Intenta bloquear:
    • El código pasa a un bloque de prueba, lo que indica que intentará ejecutar las declaraciones contenidas en él. Aquí se abordan las posibles excepciones.
    Intento de conversión:
    • El programa intenta utilizar std::stol() para transformar la cadena numStr en un número entero largo dentro del bloque try.
    Conversión efectiva:
    • El resultado se mantiene en la variable resultado si la conversión se realiza correctamente.
    Valor convertido de salida:
    • Luego, el programa imprime el número convertido exitosamente en la salida estándar.
    Tratamiento de excepciones:
    • Uno de los bloques catch maneja cualquier excepción que surja durante la conversión.
    Excepción para detectar un argumento no válido:
    • Se imprime un mensaje de error que indica que el argumento no es válido si la excepción es del tipo std::invalid_argument.
    Excepción por captura fuera de rango:
    • Se imprime un mensaje de error que indica que el resultado de la conversión está fuera del rango válido si la excepción es del tipo std::out_of_range.
    Política de devoluciones:
    • El programa devuelve 0 al sistema operativo, lo que significa que la ejecución fue exitosa y la función principal finaliza.

En resumen, el código intenta utilizar el std::stol() Función dentro de un bloque try para convertir la cadena '12345' en un entero largo. El resultado se imprime si la conversión se realiza correctamente. Captura excepciones e imprime el mensaje de error relevante en caso de que surja (ya sea debido a un argumento incorrecto o porque el resultado está fuera del rango).

cadena a entero

Finalmente, el programa devuelve 0, lo que significa que se completó con éxito.

Programa de ejemplo 2:

Tomemos otro ejemplo para ilustrar el uso de función std::stol en C++.

 #include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end):
'; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye!
'; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; } 

Producción:

función std::stol en C++

Explicación :

  • En este ejemplo, se solicita al usuario que ingrese valores de cadena para convertir.
  • La aplicación seguirá aceptando entradas del usuario hasta que el usuario introduzca 'salida' usando un bucle while.
  • Std::cin se utiliza dentro del bucle para leer la entrada del usuario.
  • Entrando 'salida' hace que este programa imprima un mensaje de despedida y finalice el ciclo.
  • Si no, intenta usar std::stol para convertir la entrada a larga.
  • El valor convertido se imprime si la conversión se realiza correctamente.
  • Detecta excepciones (argumentos no válidos, fuera de rango), imprime un mensaje de error y continúa.
  • Mientras espera la entrada de un nuevo usuario, el bucle pasa a la siguiente iteración.