这适用于任何语言,但就目前而言,让我们看看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)。
发布于 2013-09-15 21:26:02
我想你是在找std::isxdigit。
https://stackoverflow.com/questions/18820837
复制相似问题