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