了解错误“错误:无法将'char **'转换为'const char *'以将参数'1'转换为'double atof(const char *)'”

时间:2013-11-28 18:21:58

标签: c++ error-handling compiler-errors atof

所以我正在为我的课程完成这项任务,书籍真的不清楚如何使用argc,argv和atof()项目(对我来说都是新手),所以我试图使用它们但是我收到了这个错误,我不太清楚如何纠正它:

这是我的错误:

error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’

这是我的代码:

int main(int argc, char** argv)
{
   //Code removed

   //Code removed

   float *feet = atof(argv); // <-- it says the error is with this line

   //Code removed

   return 0;
}

float convertFeet(float feet)
{
   float meters = feet * .3048;

   return meters;
}

该程序的“目的”是将给定的脚转换为浮动,然后显示它们(同时将它们转换为米)。我已经知道convertFeet()函数在添加atof(),argc和&amp;之前测试了它。 argv程序的一部分。如果有人能帮助我更好地理解这个错误,那么解决方案将非常有用!

再次感谢,

-Stephen

P.S。这肯定是编译错误,正如我的编译器告诉我的那样。我只是没有发布错误的那部分,因为我认为该部分代码是多余的。

1 个答案:

答案 0 :(得分:4)

char ** argv可以包含多个“字符串”。 (我知道C / C ++在技术上并不具有字符串类型,但我希望你从概念上得到我的意思)。 argv是一个char *(字符串)数组,包括可执行文件的名称和所有参数;

例如:     myfile.exe param1 param 2

会产生

argv[0] = myfile.exe
argv[1] = param1
argv[2] = param2

和argc = 3

你可以通过几种不同的方式做到这一点,但最简单的方法是:

float feet = atof(argv[1]);

你应该做一些错误检查,以确保argc至少为2或者会爆炸。也可能有多个参数argv [2],3等..(如果argc == 1没有提供参数)

希望有所帮助。