📜  C ++中的std :: stol()和std :: stoll()函数

📅  最后修改于: 2021-05-31 19:56:29             🧑  作者: Mango

  1. std :: stol() :此函数将在函数调用中作为参数提供的字符串转换为long int。它解析str并将其内容解释为指定基数的整数,并将其作为long int类型的值返回。

    句法:

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

    参数:该函数接受三个参数,如下所述:

    • str:它指定一个字符串对象,并以整数表示。
    • idx :它指定一个指向size_t类型的对象的指针,该指针的值由函数设置为数值后面的str中下一个字符的位置。该参数也可以是空指针,在这种情况下不使用它。
    • base :它指定数字基数,以确定用来解释字符的数字系统。如果基数为0,则要使用的基数由序列中的格式确定。预设值为10。

    返回值:该函数将转换后的整数作为long int类型的值返回。

    // CPP code for illustration
    // of stol() function.
    #include 
    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;
    }
    
    输出:
    dec_num = 9876543210
    hex_num = 16777215
    binary_num = 127
    
  2. std :: stoll():此函数将在函数调用中作为参数提供的字符串转换为long long int。它解析str并将其内容解释为指定基数的整数,并将其作为long long int类型的值返回。

    句法:

    long long int stoll (const string&  str, size_t* idx = 0, int base = 10)
      参数:该函数接受三个参数,如下所述:
    • str:此参数指定具有整数表示形式的String对象。
    • idx:此参数指定指向size_t类型的对象的指针,该对象的值由函数设置为数值后str中下一个字符的位置。此参数也可以是空指针,在这种情况下,将不使用该参数。
    • base:此参数指定数字基数,以确定用于解释字符的数字系统。如果基数为0,则它使用的基数由序列中的格式确定。默认基数为10。

    返回值:该函数将转换后的整数作为long long int类型的值返回。

    // CPP code for illustration
    // of stoll() function.
    #include 
    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;
    }
    
    输出:
    dec_num = 9876543210
     hex_num = 16777215
    binary_num = 127
    

错误和异常:如果无法执行任何转换,则会抛出invalid_argument异常。如果读取的值超出可表示值范围的整数,则将抛出invalid_argumentout_of_range异常。

// CPP code for illustration of stoll()
// function when invalid_argument 
// exception is thrown.
#include 
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;
}

输出:

Runtime Errors:
Invalid argument
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”