📜  std :: stod,std :: stof,std :: stold在C++中

📅  最后修改于: 2021-05-30 16:42:30             🧑  作者: Mango

  1. std :: stod():它将字符串转换为双精度型
    句法:
    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 
    #include 
      
    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;
    }
    

    输出:

    5.6
    

    另一个例子 :

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

    输出:

    5 5 5
    

    如果未执行转换,则将抛出invalid_argument异常。如果读取的值超出可表示值范围的两倍,则抛出out_of_range异常。无效的idx导致未定义的行为。

  2. std :: stof:它将字符串转换为浮点数。
    句法:
    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.

    范例1:

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

    输出:

    22.5
    

    范例2:

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

    输出:

    5000.5
    

    如果无法执行任何转换,则将抛出invalid_argument异常。

  3. std :: stold:它将字符串转换为long double。
    句法:
    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.
    

    范例1:

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

    输出:

    500087
    

    范例2:

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

    输出:

    2077.5
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”