• C++字符串转换(stoi;stol;stoul;stoll;stoull;stof;stod;stold)


    一、stoi

      头文件string

    int stoi (const string&  str, size_t* idx = 0, int base = 10);
    int stoi (const wstring& str, size_t* idx = 0, int base = 10);
    

      

      将字符串转换为整数
      解析str将其内容解释为指定基数的整数,并以int值的形式返回。

      如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

      该函数使用strtol(或wcstol)来执行转换(有关该过程的更多详细信息,请参阅strtol)。

    参数

    1. str
      字符串对象,表示整数。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。
    3. base
      确定有效字符及其解释的数字基数(基数)。
      如果为0,则使用的基数由序列中的格式确定(有关详细信息,请参阅strtol)。 请注意,默认情况下,此参数为10,而不是0。

    返回值

      成功时,该函数将转换后的整数作为int值返回。

    // stoi example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stoi
    
    int main ()
    {
      std::string str_dec = "2001, A Space Odyssey";
      std::string str_hex = "40c3";
      std::string str_bin = "-10010110001";
      std::string str_auto = "0x7f";
    
      std::string::size_type sz;   // alias of size_t
    
      int i_dec = std::stoi (str_dec,&sz);
      int i_hex = std::stoi (str_hex,nullptr,16);
      int i_bin = std::stoi (str_bin,nullptr,2);
      int i_auto = std::stoi (str_auto,nullptr,0);
    
      std::cout << str_dec << ": " << i_dec << " and [" << str_dec.substr(sz) << "]
    ";
      std::cout << str_hex << ": " << i_hex << '
    ';
      std::cout << str_bin << ": " << i_bin << '
    ';
      std::cout << str_auto << ": " << i_auto << '
    ';
    
      return 0;
    }

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

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

    二、stol

    头文件string

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

    将字符串转换为long int
    解析str将其内容解释为指定基数的整数,并以long int类型的值返回。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtol(或wcstol)来执行转换(有关该过程的更多详细信息,请参阅strtol)。

    参数

    1. str
      字符串对象,表示整数。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。
    3. base
      确定有效字符及其解释的数字基数(基数)。
      如果为0,则使用的基数由序列中的格式确定(有关详细信息,请参阅strtol)。 请注意,默认情况下,此参数为10,而不是0。

    返回值

      成功时,该函数将转换后的整数作为long int类型的值返回。

    // stol example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stol
    
    int main ()
    {
      std::string str_dec = "1987520";
      std::string str_hex = "2f04e009";
      std::string str_bin = "-11101001100100111010";
      std::string str_auto = "0x7fffff";
    
      std::string::size_type sz;   // alias of size_t
    
      long li_dec = std::stol (str_dec,&sz);
      long li_hex = std::stol (str_hex,nullptr,16);
      long li_bin = std::stol (str_bin,nullptr,2);
      long li_auto = std::stol (str_auto,nullptr,0);
    
      std::cout << str_dec << ": " << li_dec << '
    ';
      std::cout << str_hex << ": " << li_hex << '
    ';
      std::cout << str_bin << ": " << li_bin << '
    ';
      std::cout << str_auto << ": " << li_auto << '
    ';
    
      return 0;
    }
    

      

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

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

    三、stoul

    头文件string

    unsigned long stoul (const string&  str, size_t* idx = 0, int base = 10);
    unsigned long stoul (const wstring& str, size_t* idx = 0, int base = 10);
    

    将字符串转换为无符号整数
    解析str将其内容解释为指定基数的整数,该基数作为无符号长整数值返回。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtoul(或wcstoul)执行转换(有关该过程的更多详细信息,请参阅strtol)。

    参数

    1. str
      字符串对象,表示整数。
    2. inx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。
    3. base
      确定有效字符及其解释的数字基数(基数)。
      如果为0,则使用的基数由序列中的格式确定(有关详细信息,请参阅strtol)。 请注意,默认情况下,此参数为10,而不是0。

    返回值

      成功时,该函数将转换后的整数作为无符号长整数值返回。

    // stoul example
    #include <iostream>   // std::cin, std::cout
    #include <string>     // std::string, std::stoul, std::getline
    
    int main ()
    {
      std::string str;
      std::cout << "Enter an unsigned number: ";
      std::getline (std::cin,str);
      unsigned long ul = std::stoul (str,nullptr,0);
      std::cout << "You entered: " << ul << '
    ';
      return 0;
    }
    

     

    复杂度

      未指定,但通常在解释的字符数中是线性的。

    数据范围

      修改idx指向的值(如果不为零)。

    异常

      如果无法执行转换,则抛出invalid_argument异常。
      如果读取的值超出无符号长度的可表示值范围,则抛出out_of_range异常。
      无效的idx会导致未定义的行为。

    四、stoll

    头文件string

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

    将字符串转换为long long
    解析str将其内容解释为指定基数的整数,并将其作为long long类型的值返回。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtoll(或wcstoll)来执行转换(有关该过程的更多详细信息,请参阅strtol)。

    参数

    1. str
      字符串对象,表示整数。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。
    3. base
      确定有效字符及其解释的数字基数(基数)。
      如果为0,则使用的基数由序列中的格式确定(有关详细信息,请参阅strtol)。 请注意,默认情况下,此参数为10,而不是0。

    返回值

    成功时,该函数返回转换后的整数作为long long类型的值。

    // stoll example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stoll
    
    int main ()
    {
      std::string str = "8246821 0xffff 020";
    
      std::string::size_type sz = 0;   // alias of size_t
    
      while (!str.empty()) {
        long long ll = std::stoll (str,&sz,0);
        std::cout << str.substr(0,sz) << " interpreted as " << ll << '
    ';
        str = str.substr(sz);
      }
    
      return 0;
    }
    

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

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

    五、stoull

    头文件string

    unsigned long long stoull (const string&  str, size_t* idx = 0, int base = 10);
    unsigned long long stoull (const wstring& str, size_t* idx = 0, int base = 10);
    

    将字符串转换为unsigned long long
    解析str将其内容解释为指定基数的整数,该值作为unsigned long long类型的值返回。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtoull(或wcstoull)执行转换(有关该过程的更多详细信息,请参阅strtol)。

    参数

    1. str
      字符串对象,表示整数。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。
    3. base
      确定有效字符及其解释的数字基数(基数)。
      如果为0,则使用的基数由序列中的格式确定(有关详细信息,请参阅strtol)。 请注意,默认情况下,此参数为10,而不是0。

    返回值

    成功时,该函数将转换后的整数作为unsigned long long类型的值返回。

    // stoull example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stoull
    
    int main ()
    {
      std::string str = "8246821 0xffff 020 -1";
    
      std::string::size_type sz = 0;   // alias of size_t
    
      while (!str.empty()) {
        unsigned long long ull = std::stoull (str,&sz,0);
        std::cout << str.substr(0,sz) << " interpreted as " << ull << '
    ';
        str = str.substr(sz);
      }
    
      return 0;
    }
    

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

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

    六、stof

    头文件string

    float stof (const string&  str, size_t* idx = 0);
    float stof (const wstring& str, size_t* idx = 0);
    

    将字符串转换为float
    解析str将其内容解释为浮点数,该值作为float类型返回。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtod(或wcstod)来执行转换(有关该过程的更多详细信息,请参阅strtod)。 请注意,这些函数接受的格式取决于当前的语言环境。

    参数

    1. str
      具有浮点数表示的String对象。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。

    返回值

    成功时,该函数将转换后的浮点数作为float类型的值返回。

    // stof example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stof
    
    int main ()
    {
      std::string orbits ("686.97 365.24");
      std::string::size_type sz;     // alias of size_t
    
      float mars = std::stof (orbits,&sz);
      float earth = std::stof (orbits.substr(sz));
      std::cout << "One martian year takes " << (mars/earth) << " Earth years.
    ";
      return 0;
    }
    

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

    如果无法执行转换,则抛出invalid_argument异常。
    如果读取的值超出float的可表示值范围(在某些库实现中,这包括下溢),则抛出out_of_range异常。
    无效的idx会导致未定义的行为。

    七、stod

    头文件string

    double stod (const string&  str, size_t* idx = 0);
    double stod (const wstring& str, size_t* idx = 0);
    

    将字符串转换为double
    解析str将其内容解释为浮点数,该值返回为double类型的值。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtod(或wcstod)来执行转换(有关该过程的更多详细信息,请参阅strtod)。 请注意,这些函数接受的格式取决于当前的语言环境。

    参数

    1. str
      具有浮点数表示的String对象。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。

    返回值

    成功时,该函数将转换后的浮点数作为double类型的值返回。

    // stod example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stod
    
    int main ()
    {
      std::string orbits ("365.24 29.53");
      std::string::size_type sz;     // alias of size_t
    
      double earth = std::stod (orbits,&sz);
      double moon = std::stod (orbits.substr(sz));
      std::cout << "The moon completes " << (earth/moon) << " orbits per Earth year.
    ";
      return 0;
    }
    

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

    如果无法执行转换,则抛出invalid_argument异常。
    如果读取的值超出double的可表示值范围(在某些库实现中,这包括下溢),则抛出out_of_range异常。
    无效的idx会导致未定义的行为。

    八、stold

    头文件string

    long double stold (const string&  str, size_t* idx = 0);
    long double stold (const wstring& str, size_t* idx = 0);
    

    将字符串转换为long double
    解析str将其内容解释为浮点数,该值作为long double类型返回。

    如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

    该函数使用strtold(或wcstold)来执行转换(有关该过程的更多详细信息,请参阅strtod)。

    参数

    1. str
      具有浮点数表示的String对象。
    2. idx
      指向size_t类型对象的指针,其值由函数设置为数值后str中下一个字符的位置。
      此参数也可以是空指针,在这种情况下不使用它。

    返回值

    成功时,该函数将转换后的浮点数作为long double类型的值返回。

    // stold example
    #include <iostream>   // std::cout
    #include <string>     // std::string, std::stod
    
    int main ()
    {
      std::string orbits ("90613.305 365.24");
      std::string::size_type sz;     // alias of size_t
    
      long double pluto = std::stod (orbits,&sz);
      long double earth = std::stod (orbits.substr(sz));
      std::cout << "Pluto takes " << (pluto/earth) << " years to complete an orbit.
    ";
      return 0;
    }
    

    复杂度

    未指定,但通常在解释的字符数中是线性的。

    数据范围

    修改idx指向的值(如果不为零)。

    异常

    如果无法执行转换,则抛出invalid_argument异常。
    如果读取的值超出了可表示值的范围(在某些库实现中,这包括下溢),则抛出out_of_range异常。
    无效的idx会导致未定义的行为。

    本文来自博客园,作者:Mr-xxx,转载请注明原文链接:https://www.cnblogs.com/MrLiuZF/p/13591618.html

  • 相关阅读:
    Hard Rock
    Codeforces Round #416 (Div. 2) B. Vladik and Complicated Book
    codeforces 793B. Igor and his way to work
    codeforces 1B Spreadsheets
    HDU 1069 Monkey and Banana
    codeforces 2B The least round way
    【机器学习】 通俗说拟合
    python-八皇后问题
    python-核心知识思维导图
    python-@property 属性
  • 原文地址:https://www.cnblogs.com/MrLiuZF/p/13591618.html
Copyright © 2020-2023  润新知