zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    马云:员工的离职原因--转载
    zookeeper源码分析之五服务端(集群leader)处理请求流程
    技术高手如何炼成?--转自知乎
    一次上线事故经验
    zookeeper源码分析之四服务端(单机)处理请求流程
    AngularJS2.0 quick start——其和typescript结合需要额外依赖
    typescript 入门例子 Hello world——ts就是一个宿主机语言
    Kubernetes——自动扩展容器!假设你突然需要增加你的应用;你只需要告诉deployment一个新的 pod 副本总数即可
    Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩
    华为FusionSphere概述——计算资源、存储资源、网络资源的虚拟化,同时对这些虚拟资源进行集中调度和管理
  • 原文地址:https://www.cnblogs.com/MrLiuZF/p/13591618.html
Copyright © 2011-2022 走看看