转换多个ifelse以在C/C++中切换大小写

在 C/C++ 中,我有一个场景,如果应该根据空大小执行。如果变量 a 的大小为 0,则应打印字符串 'add name',否则应打印 'leave it' 字符串。但是我也有用于编码的 switch case,对于每种情况,如果条件会有所不同。

 switch(encoding)
    case utf:
        if(a->size-5 == 0)
        {
            cout<<"add name";
        }
        else
        {
           cout<<"leave it";
        }
    case ansi:
        if(a->size-4 == 0)
        {
            cout<<"add name";
        }
        else
        {
           cout<<"leave it";
        }
    case ansi8:
        if(a->size-8 == 0)
        {
            cout<<"add name";
        }
        else
        {
           cout<<"leave it";
        } 

我想以最少的方式做到这一点。那么最好的方法是什么。

回答

我不完全理解您期望的解决方案,但是 - 与评论中建议的相同 - 从您的代码中删除重复时,我们留下:

    if(a->size-offset == 0)
    {
        cout<<"add name";
    }
    else
    {
       cout<<"leave it";
    }

在哪里offset可以通过确定:

int offset = 0;
switch(encoding) {
   case utf: offset = 5; break;
   case ansi: offset = 4; break;
   case asni8: offset = 8; break;
}

可能更简洁的解决方案是使用多态类型,以便将编码差异封装在虚拟方法中,您可以编写:

    if(a->check_size())
    {
        cout<<"add name";
    }
    else
    {
       cout<<"leave it";
    }


以上是转换多个ifelse以在C/C++中切换大小写的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>