欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解并掌握C++中的字符串转换函数:stoi, stol, stoul, stoll, stoull和stof

最编程 2024-01-12 20:14:45
...

头文件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.\n";
  return 0;
}

在这里插入图片描述

复杂度

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

数据范围

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

异常

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