初始化临时字符串以保持条件可读是否可以接受?

aya*_*ane 0 c++ string hex char conditional-statements

这适用于任何语言,但现在,让我们看看c ++.假设我们有两个字符必须采用十六进制值:

char b, t;

do {
    //some code

} while(((b<'0' || b>'9') && (b<'A' || b>'F')) || ((t<'0' || t>'9') && (t<'A' || t>'F')));
Run Code Online (Sandbox Code Playgroud)

Phew最后一个条件看起来很可怕.让我们来看看另一个:

char b, t;

do {
    //some code

} while(string(1,b).find_first_of("0123456789ABCDEF")==-1 || string(1,t).find_first_of("0123456789ABCDEF")==-1);
Run Code Online (Sandbox Code Playgroud)

代码看起来仍然非常混乱,但至少我们可以理解发生了什么:初始化几个字符串以查看其中是否有十六进制字符.

假设性能没有差异,第二个解决方案是否优于第一个解决方案,还是有另一种方法来查看char是否包含十六进制值而不会使代码膨胀?

如果需要,可以在循环中将字符的大小写更改为ALLCAPS或小写(目前为ALLCAPS).

Jes*_*ood 6

我想你正在寻找std :: isxdigit.