可能重复:
C++有哪些参数解析器库?
如果指定程序运行如下,那么在C++中解析命令行参数的最佳方法是什么:
prog [-abc] [input [output]]
Run Code Online (Sandbox Code Playgroud)
STL中有一个库可以做到这一点吗?
有关:
我知道以下内容:
我确信还有更多我没有使用过甚至没有听过的; 快速谷歌搜索显示Gopt,argtable和Optlist.
就个人而言,我argp最喜欢,并且我使用getopt/ 编写的每个程序getopt_long(超出某个复杂的基线)都已转换为使用argp.它比所有GNU风格的约定更加广泛可用popt,比getopt_long文档更强大,更灵活.在缺点方面,它远非最容易使用(由于非常灵活),并且支持它的代码非常冗长(C中的许多内容也是如此).
你用了什么,为什么?
是的,我的意思是C而不是C++.有大量的C++解析器,但我不使用C++.
约翰米利金指出,popt不再维持.我列出它是因为许多程序仍在使用它 - 包括AbiWord,rpm,rsync和samba - 尽管Gnome努力迁移.但我现在也添加了一个指向Glib的参数解析器的链接.
对于C++参数解析,请参阅问题C++有哪些参数解析器库?
我正在编写Win32控制台应用程序,它可以使用这样的可选参数启动:
app.exe /argName1:"argValue" /argName2:"argValue"
Run Code Online (Sandbox Code Playgroud)
我是否必须手动解析它(以便能够确定哪些参数存在)来自argc/argv变量,或者Win32 API是否包含一些参数解析器?
可能重复:
C++有哪些参数解析器库?
我已经做了一些寻找,并且有很多用于命令行选项解析的库,但很难区分它们.有没有人有任何经验?是否比其他任何人更难/更好/更快/更容易/更好?或者我应该自己成长?
有效地在C++中进行命令行参数处理的建议:
注意:仅限Windows
1: #include <iostream.h>
2: int main(int argc, char **argv)
Run Code Online (Sandbox Code Playgroud)
而不是,例如:
if ( argc != 3 ) {
....
}
Run Code Online (Sandbox Code Playgroud)
问候
有没有一种真正有效的方法来处理C++中的命令行参数?
我在下面做的事情感觉完全是业余的,我无法想象这是如何在专业软件中真正处理命令行参数(atoi,硬编码的argc检查).
// Command line usage: sum num1 num2
int main(int argc, char *argv[])
{
if (argc < 3)
{
cout << "Usage: " << argv[0] << " num1 num2\n";
exit(1);
}
int a = atoi(argv[1]);
int b = atoi(argv[2]);
int sum = a + b;
cout << "Sum: " << sum << "\n";
return 0;
}
可能的重复:
C++有哪些参数解析器库?
C++ Parse命令行参数
您可以建议的最佳C++命令行参数解析器是什么?
command-line ×6
c++ ×5
c ×3
parsing ×3
windows ×2
arguments ×1
open-source ×1
option ×1
scala ×1
winapi ×1