0

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

char b, t;

do {
    //some code

} while(((b<'0' || b>'9') && (b<'A' || b>'F')) || ((t<'0' || t>'9') && (t<'A' || t>'F')));

,最后一个条件看起来很吓人。让我们看一个替代方案:

char b, t;

do {
    //some code

} while(string(1,b).find_first_of("0123456789ABCDEF")==-1 || string(1,t).find_first_of("0123456789ABCDEF")==-1);

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

假设性能没有差异,第二种解决方案是否比第一种解决方案更好,或者是否有另一种方法可以查看 char 是否包含十六进制值而不会使代码膨胀?

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

4

1 回答 1

6

我认为您正在寻找std::isxdigit

于 2013-09-16T05:26:02.973 回答