C++ 数组中的数据类型

C++ 数组中的数据类型,c++,arrays,C++,Arrays,多亏了你们这些家伙,这次atof不知怎么起作用了。我忘了提到它是C++类,所以有些代码对我来说似乎很复杂: 原来的问题是: 编写一个程序,找出一组数据的最小值、最大值或平均值 浮点数。程序的第一个参数将是 指定用户所需操作的字符串:min', max''、sum''或mean''。所有其他参数都是数字 如果main被定义为接受参数 int main (int argc, char** argv[]) 假设它被编译成一个可执行文件anexe.exe,使用我们在课堂上学习的程序的方法是在cmd或s

多亏了你们这些家伙,这次atof不知怎么起作用了。我忘了提到它是C++类,所以有些代码对我来说似乎很复杂: 原来的问题是:

编写一个程序,找出一组数据的最小值、最大值或平均值 浮点数。程序的第一个参数将是 指定用户所需操作的字符串:
min',
max''、
sum''或
mean''。所有其他参数都是数字

如果main被定义为接受参数

int main (int argc, char** argv[])
假设它被编译成一个可执行文件anexe.exe,使用我们在课堂上学习的程序的方法是在cmd或shell中键入以下内容: anexe max 1 2 3 4 5

===========

我的问题是:

参数应该放在数组argv[]中,argv[0]是文件名,argv[1]是字符串min/max/sum/mean,argv[2]及更高版本应该是数字。但这些数据类型是什么?它们是木炭吗?如果是,如何将它们转换为浮点

=========== 我的代码是:

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main (int argc, char* argv[])
{
std::string option = std::string(argv[1]);

if (argc >1)
{
    int i = 2;
    if ( option == "min")
        {
            float least = atof (argv[2]);
            for( i = 2;i <=(argc-1);i++)
            {
                int temp = atof(argv[i]);
                if (temp < least)
                {least = temp;}
            }
            cout <<"\n"<<least; 
            return 0;
        }
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
std::string选项=std::string(argv[1]);
如果(argc>1)
{
int i=2;
如果(选项==“最小值”)
{
float-least=atof(argv[2]);
对于(i=2;i首先,它是

char* argv[]  
不是

argv[x]
的数据类型是
char*

例如,一个(指向)多个字符的数组,
未知计数,但以
\0
终止
=C样式的字符串

要将其转换为int类型,

例如,使用
atoi
sscanf

取决于您应该拥有的编译器:

atof( char *str );
将char转换为float,正如我的同事所指出的,您将有:

char* argv[]

不是,char**argv[];

argv[i]
将具有类型
char*
;您的值参数将是浮点数的字符串表示形式,如
“3.1415”
。要将浮点数的字符串表示形式转换为其等效的浮点数,可以执行以下操作之一:

#include <stdio.h>
...
double val;
int success = sscanf( argv[i], "%f", &val );
if ( success == 0 )
  // argv[i] is not a valid floating-point number string
#包括
...
双val;
int success=sscanf(argv[i]、“%f”、&val);
如果(成功==0)
//argv[i]不是有效的浮点数字符串

#包括
#包括
...
双val;
char*chk;
val=strtod(argv[i],&chk);
如果(!isspace(*chk)&&*chk!=0)
//argv[i]不是有效的浮点数字符串
第二种方法捕获第一种方法不会捕获的错误,因此我更喜欢这种方法

int value = atoi(argv[1].c_str());

应该有点帮助。

argv的数据类型是什么?因此,
argv[i]的数据类型是什么你需要知道如何将<代码> char */COD>转换成<代码>浮点。你有很多选择,但是我个人考虑使用A。看这里,我投票把这个问题关为离题,因为它是一个家庭作业,编辑不应该被批准,因为它现在是原始问题+一个新问题。我猜教授的习惯是?使用指向指针的指针。它是有效的。还有,我应该使用什么“包含”来使用atof吗?如果你已经关闭了编译器警告和/或你正在疯狂地施放,那么是的。但是这些都不是好的做法。stdlib。h@user3275943:它是
char**argv
char*argv[]
字符**argv[]
是一个错误。
#include <stdlib.h>
#include <ctype.h>
...
double val;
char *chk;
val = strtod( argv[i], &chk );
if ( !isspace( *chk ) && *chk != 0 )
  // argv[i] is not a valid floating-point number string
int value = atoi(argv[1].c_str());