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

标签 c++ string char hex 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')));

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

char b, t;

do {
    //some code

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

代码看起来还是很乱,但至少我们可以理解是怎么回事了:初始化了几个字符串,看看其中是否有十六进制字符。

假设性能没有差异,第二种解决方案是否比第一种更好,或者是否有另一种方法可以在不膨胀代码的情况下查看字符是否包含十六进制值?

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

最佳答案

我想你在找std::isxdigit .

关于c++ - 初始化临时字符串以保持条件可读是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820837/

相关文章:

c++ - 删除字符矩阵

c++ - 使用字符串数组 : arrays of pointers - Are they like multidimensional arrays?

c++ - 从 noncopyable 派生 AbstractBaseClasses (ABC) 有缺点吗?

C++多级虚继承编译问题

iphone - 简单的 iOS 从 UIAlertView 收集字符串

c - 将多个字符串传递给函数 c

c - 返回字符串中的第 i 个单词

c++ - 如何使用指针访问 char * 中的字符

C++ 在捕获异常后进行清理的标准方法是什么?

c++ - 为什么我的检查在检查重复结果(指针)时不起作用