运行期间参数传递的平方根

时间:2014-04-19 16:23:29

标签: c++ c type-conversion

我是C/C++种语言的新手,我想问一个简单的问题。我写了以下代码:

#include <stdio.h>
#include <math.h>

int main(int argc, char ** argv){
    printf("Square root from %f is %f", argv[1], sqrt(argv[1]));
}

但是它没有用,因为argv [1]的类型为char*。如何将argv[1]转换为双倍,如果不可能则抛出异常?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用atof。因此,你会写这样的东西:

printf("Square root from %s is %f", argv[1], sqrt(atof(argv[1])));

当然,您可以查看更高级别的替代方案,例如C ++ 11 std::stod,但对于这个简单的情况来说这可能是一种过度杀伤,但如果您以后坚持使用C ++代码,如果我是你,我会写这个:

std::string myString = argv[1];
std::cout << "Square root from " << argv[1] << " is "
          << std::sqrt(std::stod(myString)) << std::endl;

您还需要将第一个占位符更改为%s,因为您正在打印第一个参数,就像您编写一个字符串一样。

在您的最终代码中,在尝试访问字符串数组的第二项之前,请确保argc至少为2。