我有一个 C++ 程序,其主要功能如下所示:
if(a.size == 2) {
if(s1) {
f1(a[0], a[1], "string1");
}
else{
f1(a[0], a[1], "string2");
}
}
if(a.size == 1) {
if(s1) {
f1(a[0], "string1");
}
else{
f1(a[0], "string2");
}
}
else {
if(s1) {
f1("string1");
}
else{
f1("string2");
}
}
...
...
...
...
其中 a
和 s1
是从命令行选项接收的。
它有许多命令行选项和多层 if...else..
结构,看起来更乱。
有什么改进的方法吗?
最佳答案
代替这个原始代码,
if(a.size == 2) {
if(s1) {
f1(a[0], a[1], "string1");
}
else{
f1(a[0], a[1], "string2");
}
}
if(a.size == 1) {
if(s1) {
f1(a[0], "string1");
}
else{
f1(a[0], "string2");
}
}
else {
if(s1) {
f1("string1");
}
else{
f1("string2");
}
}
假设缺少else
,做
auto const s = (s1? "string1" : "string2");
switch( a.size )
{
case 0: f1( s ); break;
case 1: f1( a[0], s ); break;
case 2: f1( a[0], a[1], s ); break;
}
例如。
对于解析命令行参数的一般问题,请查看 getopt
和各种选项解析器,例如在提升中。
关于c++ - 在 C++ 中处理许多 commnadline 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591609/