我将信息存储在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;
我该怎么办? 谢谢!
答案 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;
}