C++ 如何在C++;在linux终端中有负号(-)的吗?
我需要这个做作业。我知道C++中标准命令行输入是如何工作的。如果我有一个名为training的可执行文件,那么我可以在terminal中编写以下行:C++ 如何在C++;在linux终端中有负号(-)的吗?,c++,linux,parsing,command-line,command-line-arguments,C++,Linux,Parsing,Command Line,Command Line Arguments,我需要这个做作业。我知道C++中标准命令行输入是如何工作的。如果我有一个名为training的可执行文件,那么我可以在terminal中编写以下行: ./training input.text output1 output2 在这种情况下,我的主要方法如下: int main( int argc, char* argv[] ){ take_input( argv[1] ); make_output( argv[2], argv[3] ); } int take_input
./training input.text output1 output2
在这种情况下,我的主要方法如下:
int main( int argc, char* argv[] ){
take_input( argv[1] );
make_output( argv[2], argv[3] );
}
int take_input( string filename );
int make_output( string filename, string filename2 )
我的函数声明如下:
int main( int argc, char* argv[] ){
take_input( argv[1] );
make_output( argv[2], argv[3] );
}
int take_input( string filename );
int make_output( string filename, string filename2 )
但是,我需要按如下方式编写命令行:
training -i input.csv -os output1 -oh output2
我不知道如何修改。非常感谢您的帮助。在Linux上,您只需包括
unistd.h
并使用它。getopt()
就可以了,但是如果您的需求很小并且不想添加外部依赖项,您可以编写自己的小助手函数来查找破折号关键字在argv
数组中的位置,如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Returns the index of the specified keyword (e.g. "-oh")
// or returns -1 if the keyword doesn't exist
static int find_keyword(int argc, char *argv[], const char * keyword)
{
for (int i=0; i<argc; i++)
{
if (strcmp(argv[i], keyword) == 0) return i;
}
return -1;
}
int main( int argc, char* argv[] )
{
const int iIndex = find_keyword(argc, argv, "-i");
if (iIndex < 0) {printf("No -i keyword found! Exiting!\n"); exit(10);}
const int osIndex = find_keyword(argc, argv, "-os");
if (osIndex < 0) {printf("No -os keyword found! Exiting!\n"); exit(10);}
const int ohIndex = find_keyword(argc, argv, "-oh");
if (ohIndex < 0) {printf("No -oh keyword found! Exiting!\n"); exit(10);}
take_input( argv[iIndex+1] );
make_output( argv[osIndex+1], argv[ohIndex+1] );
}
#包括
#包括
#包括
//返回指定关键字的索引(例如“-oh”)
//如果关键字不存在,则返回-1
静态int find_关键字(int argc,char*argv[],const char*关键字)
{
对于(inti=0;iLook upgetopt
),它是GNU编译器中内置的一个库。如果有人能提供修改,那将很有帮助,不过我正在学习get opt。非常感谢Jeremy,这非常有帮助。