Adi*_*Sur 1 c++ if-statement switch-statement c++11
在 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";
}
Run Code Online (Sandbox Code Playgroud)
我想以最少的方式做到这一点。那么最好的方法是什么。
我不完全理解您期望的解决方案,但是 - 与评论中建议的相同 - 从您的代码中删除重复时,我们留下:
if(a->size-offset == 0)
{
cout<<"add name";
}
else
{
cout<<"leave it";
}
Run Code Online (Sandbox Code Playgroud)
在哪里offset可以通过确定:
int offset = 0;
switch(encoding) {
case utf: offset = 5; break;
case ansi: offset = 4; break;
case asni8: offset = 8; break;
}
Run Code Online (Sandbox Code Playgroud)
可能更简洁的解决方案是使用多态类型,以便将编码差异封装在虚拟方法中,您可以编写:
if(a->check_size())
{
cout<<"add name";
}
else
{
cout<<"leave it";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |