我知道這個話題已經被毆打致死,但我還是沒找到我所尋找的。 我需要在C++中解析命令行參數。正確的使用方法的getopt/long_getopt
我不能使用升壓和使用long_getopt
的問題是在鑄造,當時我只是打印參數,它按預期工作的循環,但分配給變量的值不以某種方式工作。
下面是完整的,可編譯程序。
#include <iostream>
#include <getopt.h>
using namespace std;
int main(int argc, char *argv[])
{
int c;
int iterations = 0;
float decay = 0.0f;
int option_index = 0;
static struct option long_options[] =
{
{"decay", required_argument, 0, 'd'},
{"iteration_num", required_argument, 0, 'i'},
{0, 0, 0, 0}
};
while ((c = getopt_long (argc, argv, "d:i:",
long_options, &option_index) ) !=-1)
{
/* getopt_long stores the option index here. */
switch (c)
{
case 'i':
//I think issue is here, but how do I typecast properly?
// especially when my other argument will be a float
iterations = static_cast<int>(*optarg);
cout<<endl<<"option -i value "<< optarg;
break;
case 'd':
decay = static_cast<float>(*optarg);
cout<<endl<<"option -d with value "<<optarg;
break;
}
}//end while
cout << endl<<"Value from variables, which is different/not-expected";
cout << endl<< decay << endl << iterations << endl;
return(0);
}
正如我在評論中提及了 - 認爲這個問題是在類型轉換,如何正確地做到這一點?如果有其他更好的方法,請讓我知道。
爲--- ./program-name -d 0.8 -i 100
謝謝您的幫助,您可以運行該程序。我是新來的Unix和C++,但很努力學習吧:)
getopt和朋友(已經很多)已經過時,並已被替換爲argp_parse()。 –