在 C++ 中,可以使用getopt函数来处理命令行参数,并根据参数的名字而不是位置来获取参数值。getopt函数是一个标准库函数,可以用来解析命令行选项。\n\n下面是一个示例代码,演示了如何使用getopt函数来处理命令行参数中的选项和参数的名字:\n\ncpp\n#include <iostream>\n#include <unistd.h>\n\nint main(int argc, char* argv[]) {\n int option;\n std::string filename;\n int number;\n\n // 通过循环获取所有选项和参数\n while ((option = getopt(argc, argv, "f:n:")) != -1) {\n switch (option) {\n case 'f':\n filename = optarg; // 使用optarg获取选项的参数值\n break;\n case 'n':\n number = std::stoi(optarg); // 使用optarg获取选项的参数值,并转换为整数\n break;\n default:\n std::cerr << "Unknown option: " << (char)option << std::endl;\n return 1;\n }\n }\n\n // 输出选项和参数的值\n std::cout << "Filename: " << filename << std::endl;\n std::cout << "Number: " << number << std::endl;\n\n // 输出非选项参数的值\n for (int i = optind; i < argc; ++i) {\n std::cout << "Argument: " << argv[i] << std::endl;\n }\n\n return 0;\n}\n\n\n在上面的示例代码中,我们通过在选项字符串中指定选项的名字来定义需要处理的选项,例如"f:n:"表示有两个选项,-f-n,并且它们都需要参数。然后使用getopt函数来获取选项和参数的值,并根据选项的名字来执行相应的操作。\n\n需要注意的是,getopt函数会将所有非选项参数(即不以-开头的参数)放在argv数组的最后,你可以通过optind变量获取非选项参数的起始索引。\n\n假设编译上述代码为可执行文件program,以下是一些示例运行命令和输出结果:\n\n\n$ ./program -f myfile.txt -n 10 arg1 arg2\nFilename: myfile.txt\nNumber: 10\nArgument: arg1\nArgument: arg2\n\n\n\n$ ./program -n 5 -f myfile.txt arg1 arg2\nFilename: myfile.txt\nNumber: 5\nArgument: arg1\nArgument: arg2\n\n\n\n$ ./program -f myfile.txt -x 10 arg1 arg2\nUnknown option: x\n\n\n在上述示例中,我们可以看到通过在命令行中指定选项的名字,而不是位置,来获取相应的参数值。

C++ 命令行参数处理:按参数名获取值 (getopt 函数)

原文地址: https://www.cveoy.top/t/topic/p0b3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录