数组中的数据类型

时间:2014-02-05 16:15:49

标签: c++ arrays

感谢你们所有人这次以某种方式工作。我忘了提到它是一个C ++类,所以有些代码看起来很复杂:)

最初的问题是:

  

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

如果将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]后来应该是数字。但这些数据类型是什么?他们是char吗?如果是这样,我怎样才能将它们转换为浮动?

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

#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;
        }

4 个答案:

答案 0 :(得分:1)

首先,它是

char* argv[]  

不是

char** argv[]  

argv[x]的数据类型为char*
即。 a(指向)许多char的数组,
未知计数,但以\0终止 = C风格的字符串。

要将其转换为int类型,
例如,使用atoisscanf

答案 1 :(得分:0)

根据您的编译器,您应该:

atof( char *str );

将char转换为float,正如我的同事指出的那样,你将拥有:

char* argv[]

不,char ** argv [];

答案 2 :(得分:0)

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

#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

第二种方法捕获了第一种不会发生的错误,因此它是我喜欢的错误。

答案 3 :(得分:-1)

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

应该有点帮助。