我如何从char [i]传递给double?

时间:2014-05-12 06:44:51

标签: c++ char double converter

我将信息存储在char数组中,我想将它们传递给单个double值。 作为一个例子,我想从中传递,

data[0]=3;
data[1]=.;
data[2]=1;
data[3]=4;
data[4]=1;
data[5]=5;
data[6]=1;

double data = 3.14151;

我该怎么办? 谢谢!

2 个答案:

答案 0 :(得分:2)

假设您的数组实际上包含字符而您只是忘记了叛逆者。我使用了一种更简单,更不容易出错的方式来初始化data,并且还有一个额外的好处,即我的版本实际上做了零终止,而你没有做到(正如Axel正确指出的那样)。

char const * data = "3.1415";

解决方案是:

#include <cstdlib>

// ...
double number = std::strtod( data, NULL );
// ...

检查strtod() documentation是否存在错误行为,以及如何使用第二个参数检查您的转化是否实际达到了预期的程度。

答案 1 :(得分:2)

您可以根据需要使用std::stringstream中的sstream或来自cstdlib的{​​{3}}或strtod(如果您使用的是C ++ 11)

cplusplus.com

引用示例
// 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;
}