我是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]
转换为双倍,如果不可能则抛出异常?
答案 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。