std::stod, std::stof, std::stold en C++

  1. std::stod() : Convierte una string en doble.
    Sintaxis:
    double stod( const std::string& str, std::size_t* pos = 0 );
    double stod( const std::wstring& str, std::size_t* pos = 0 );
    Return Value: return a value of type double
    Parameters
    str : the string to convert
    pos : address of an integer to store the 
    number of characters processed. This parameter can also be 
    a null pointer, in which case it is not used.
    

    // CPP program to illustrate
    // std::stod()
    #include <string>
    #include <iostream>
      
    int main(void)
      
    {
        std::string str = "y=4.4786754x+5.6";
      
        double y, x, a, b;
        y = 0;
        x = 0;
      
        // offset will be set to the length of 
        // characters of the "value" - 1.
        std::size_t offset = 0;
      
        a = std::stod(&str[2], &offset);
        b = std::stod(&str[offset + 3]);
      
        std::cout << b;
        return 0;
    }

    Producción:

    5.6
    

    Otro ejemplo :

    // CPP program to illustrate
    // std::stod()
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
      
        string b = "5";
        double a = stod(b);
        int c = stoi(b);
        cout << b << " " << a << " " << c << endl;
    }

    Producción:

    5 5 5
    

    Si no se realiza la conversión, se lanza una excepción invalid_argument. Si el valor leído está fuera del rango de valores representables por un doble, se lanza una excepción out_of_range. Un idx no válido provoca un comportamiento indefinido.

  2. std::stof: Convierte una string en flotante.
    Sintaxis:
    float stof( const string& str, size_t* pos = 0 );
    float stof( const wstring& str, size_t* pos = 0 );
    Parameters
    str : the string to convert
    pos : address of an integer to store the number of characters processed
    This parameter can also be a null pointer, in which case it is not used.
    Return value: it returns value of type float.

    Ejemplo 1:

    // CPP program to illustrate
    // std::stof()
    #include <iostream>
    #include <string>
    int main()
    {
        std::string x;
        x = "20";
        float y = std::stof(x) + 2.5;
        std::cout << y;
        return 0;
    }

    Producción:

    22.5
    

    Ejemplo 2:

    // CPP program to illustrate
    // std::stof()
    #include <iostream>
    #include <string>
    int main()
    {
        std::string str = "5000.5";
        float x = std::stof(str);
        std::cout << x;
        return 0;
    }

    Producción:

    5000.5
    

    Si no se puede realizar ninguna conversión, se lanza una excepción invalid_argument.

  3. std::stold: Convierte una string en un doble largo.
    Sintaxis:
    long double stold( const string& str, size_t *pos = 0 );
    long double stold (const wstring& str, size_t* pos = 0);
    Parameters : 
    str : the string to convert
    pos : address of integer to store the index of the first unconverted character.
    This parameter can also be a null pointer, in which case it is not used.
    Return value : it returns value of type long double.
    

    Ejemplos 1:

    // CPP program to illustrate
    // std::stold()
    #include <iostream>
    #include <string>
    int main()
    {
        std::string str = "500087";
        long double x = std::stold(str);
        std::cout << x;
        return 0;
    }

    Producción:

    500087
    

    Ejemplo 2:

    // CPP program to illustrate
    // std::stold()
    #include <iostream>
    #include <string>
    int main()
    {
        std::string x;
        x = "2075";
        long double y = std::stof(x) + 2.5;
        std::cout << y;
        return 0;
    }

    Producción:

    2077.5
    

Este artículo es una contribución de Shivani Ghughtyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *