Funciones std::stol() y std::stoll() en C++

  1. std::stol() : esta función convierte la string, proporcionada como argumento en la llamada a la función, en un int largo. Analiza str interpretando su contenido como un número entero de la base especificada, que se devuelve como un valor de tipo long int.

    Sintaxis:

    long int stol (const string&  str, size_t* idx = 0, int base = 10)

    Parámetros: La función acepta tres parámetros que se describen a continuación:

    • str: Especifica un objeto de string con la representación de un número entero.
    • idx : especifica un puntero a un objeto de tipo size_t, cuyo valor lo establece la función en la posición del siguiente carácter en str después del valor numérico. El parámetro también puede ser un puntero nulo, en cuyo caso no se utiliza.
    • base : Especifica la base numérica para determinar el sistema numérico en el que se interpretan los caracteres. Si la base es 0, la base que se utilizará está determinada por el formato de la secuencia. El valor predeterminado es 10.

    Valor devuelto: la función devuelve el número entero convertido como un valor de tipo long int.

    // CPP code for illustration
    // of stol() function.
    #include <bits/stdc++.h>
    using namespace std;
      
    int main()
    {
      
        // converting decimal number.
        string dec_num = "9876543210";
        cout << "dec_num = " << 
        stol(dec_num, nullptr, 10) << "\n";
      
        // converting hexadecimal number.
        string hex_num = "FFFFFF";
        cout << "hex_num = " << 
        stol(hex_num, nullptr, 16) << "\n";
      
        // converting binary number.
        string binary_num = "1111111";
        cout << "binary_num = " << 
        stol(binary_num, nullptr, 2) << "\n";
      
        return 0;
    }
    Producción:

    dec_num = 9876543210
    hex_num = 16777215
    binary_num = 127
    
  2. std::stoll(): esta función convierte una string, proporcionada como argumento en la llamada a la función, en long long int. Analiza str interpretando su contenido como un número entero de la base especificada, que se devuelve como un valor de tipo long long int.

    Sintaxis:

    long long int stoll (const string&  str, size_t* idx = 0, int base = 10)
      Parámetros: La función acepta tres parámetros que se describen a continuación:

    • str: este parámetro especifica el objeto String con la representación de un número entero.
    • idx: este parámetro especifica el puntero a un objeto de tipo size_t, cuyo valor lo establece la función en una posición del siguiente carácter en str después del valor numérico. Este parámetro también puede ser un puntero nulo, en ese caso, no se utiliza.
    • base: este parámetro especifica la base numérica para determinar el sistema numérico en el que se interpretan los caracteres. Si la base es 0, la base que utiliza está determinada por el formato de la secuencia. La base predeterminada es 10.

    Valor devuelto: la función devuelve el número entero convertido como un valor de tipo long long int.

    // CPP code for illustration
    // of stoll() function.
    #include <bits/stdc++.h>
    using namespace std;
      
    int main()
    {
      
        // converting decimal number.
        string dec_num = "9876543210";
        cout << "dec_num = " << 
        stoll(dec_num, nullptr, 10) << "\n ";
      
             
        // converting hexadecimal number.
        string hex_num = "FFFFFF";
        cout << "hex_num = " << 
        stoll(hex_num, nullptr, 16) << "\n";
      
        // converting binary number.
        string binary_num = "1111111";
        cout << "binary_num = " <<
        stoll(binary_num, nullptr, 2) << "\n";
      
            return 0;
    }
    Producción:

    dec_num = 9876543210
     hex_num = 16777215
    binary_num = 127
    

Errores y excepciones: si no se puede realizar ninguna conversión, se lanza una excepción invalid_argument . Si el valor leído está fuera del rango de valores representables por un int largo, se lanza una excepción invalid_argument o out_of_range .

// CPP code for illustration of stoll()
// function when invalid_argument 
// exception is thrown.
#include <bits/stdc++.h>
using namespace std;
   
int main() {
       
    // An invalid input string that has no
    // integer part.
    string invalid_num = "abcf$#@de";
       
    // stoll() throws invalid_argument exception
    // when conversion process fails.
    try{
        cout << stoll(invalid_num) << "\n";
    }
       
    // catch invalid_argument exception.
    catch(const std::invalid_argument){
        cerr << "Invalid argument" << "\n";
    }
    return 0;
}

Producción:

Runtime Errors:
Invalid argument

Publicación traducida automáticamente

Artículo escrito por nik1996 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *