函数模板
<string>

std::stof

float stof (const string&  str, size_t* idx = 0);float stof (const wstring& str, size_t* idx = 0);
将字符串转换为浮点数
解析str,将其内容解释为浮点数,并将其作为类型为float.

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

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

参数

str
字符串对象,包含浮点数的表示。
idx
指向类型为 size_t 的对象的指针,其值由函数设置为str中数值之后下一个字符的位置。
该参数也可以是一个空指针,此时它将不被使用。

返回值

成功时,函数将转换后的浮点数作为类型为float.

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 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;
}

可能的输出
One martian year takes 1.88087 Earth years.


复杂度

未定义,但通常与解释的字符数呈线性关系。

数据竞争

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

异常

如果无法执行转换,则抛出 invalid_argument 异常。
)。如果读取的值超出了float(在某些库实现中,这包括下溢),则抛出 out_of_range 异常。

无效的idx会导致未定义行为

另见