Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的命令行参数+;_C++ - Fatal编程技术网

C++ C+中的命令行参数+;

C++ C+中的命令行参数+;,c++,C++,我的许多程序都采用命令行参数,其中一个示例如下: a.out [file-name] [col#] [seed] 如果我想使用参数,我有很好的、易于使用的函数,例如: atof(argv[..]) and atoi(argv[..]) 我想知道C++是否存在这样简单的函数。我试着这么做: cin >> col_num >> seed; 但这不起作用。。。它等待输入(不是命令行),然后输出 谢谢解决方案1: 您可以使用lexical_cast代替atoi int x

我的许多程序都采用命令行参数,其中一个示例如下:

a.out [file-name] [col#] [seed]
如果我想使用参数,我有很好的、易于使用的函数,例如:

atof(argv[..]) and atoi(argv[..])
我想知道C++是否存在这样简单的函数。我试着这么做:

cin >> col_num >> seed;
但这不起作用。。。它等待输入(不是命令行),然后输出

谢谢

解决方案1:
您可以使用
lexical_cast
代替
atoi

int x = boost::lexical_cast<int>("12345"); 

ato*
系列很糟糕,不能正确地发出错误信号。在C++中,你想使用<代码> Boo::ListalyOxCase<代码>或一个完整的命令行解析器,如:代码> Boo::程序选项< /C> >

< p>你仍然可以使用<代码> AT/<代码>和<代码> ATOI
#include <cstdlib>

int main(int argc, char* argv[]) {
    float f = std::atof(argv[1]);
    int i = std::atoi(argv[2]);
}
#包括
int main(int argc,char*argv[]){
float f=std::atof(argv[1]);
inti=std::atoi(argv[2]);
}

但是您可以使用更通用的工具,如
boost::lexical_cast

如果您想使用streams和
>
操作符,您可以使用
stringstream

double a; // or int a or whatever
stringstream(argv[1]) >> a;

你需要包括<代码> <代码>

如果你想自己保存解析CMD行参数的工作,你可以使用一个库,比如

<代码> < < /> > >代码> ATOI < /C> >如果你认为它们符合你的需要,就可以从C++中获得。为什么你突然停止使用<代码> ARGV < /代码>?我的意思是…这是参数数组…哦。我认为这些是C函数(显然与C++兼容)。我只是想知道是否有一个C++的方式来做它,你的实现支持了吗?我知道MSVC10有,但我不认为其他编译器有。boost::program_选项可能重复+1,这使事情变得更简单。boost看起来很棒。我要玩一会儿,看看能得到什么。我可能会切换到
boost::program\u options
,它看起来会起作用。虽然
lexical\u cast
现在可以使用:)谢谢!使用ato检测错误太难?()。当我错误地键入
命令“15 2”plop
时,它将完全错过2。反对这一观点的理由是人们没有那么愚蠢。我同意,但是脚本是,在脚本中使用了很多命令,在脚本中替换了参数,应该检查这些内容。
double a; // or int a or whatever
stringstream(argv[1]) >> a;