function template
<string>

std::stod

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)。请注意,这些函数接受的格式取决于当前区域设置。

参数

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

返回值

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

示例

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

可能的输出
The moon completes 12.3684 orbits per Earth year.


复杂度

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

数据竞争

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

异常

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

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

另见