C++ “理解错误”;错误:无法转换‘;字符**’;至‘;常量字符*’;对于参数‘;1’;至‘;双atof(常量字符*)和#x2019&引用;

C++ “理解错误”;错误:无法转换‘;字符**’;至‘;常量字符*’;对于参数‘;1’;至‘;双atof(常量字符*)和#x2019&引用;,c++,error-handling,compiler-errors,atof,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 remove

所以我正在为我的类做这个作业,我的书对如何使用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;
}
int main(int argc,char**argv)
{
//代码删除
//代码删除

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

例如: myfile.exe参数1参数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,则没有提供任何参数)


希望有帮助。

argv
是一个
char**
,而不是
char*
…argv是一个指针,指向由空格字符(命令行变量)分隔的字符指针(单词)列表。请尝试*argv查找第一个变量(您需要首先检查它是否存在)
argc
几乎总是至少为1,
argv[0]
这种情况几乎总是程序路径,将其转换为float*毫无意义。嘿,詹姆斯,我更新了代码以反映您的解决方案,但随后给出了:“错误:初始化时无法将'double'转换为'float*”(我的其余代码与上面显示的完全相同)任何其他建议.Nevermind!我刚刚将float*feet改为float feet,代码运行得非常好!谢谢!太好了..我错过了*float。我是从内存中编写if的。我将更新解决方案,以防将来有人需要答案。