C++如何遍历指定的不连续ASCII字符?
解决方案
你可以选择以下任意一种方式实现需求:
方法1:拆分两个独立循环(最直观,性能无额外损耗)
直接分别遍历两个需要的字符区间,不需要的区间直接不进入遍历逻辑:
// 遍历第一个区间 '1'到'7' for (char i = '1'; i <= '7'; i++) { // 你的业务逻辑 } // 遍历第二个区间 '?'到'F' for (char i = '?'; i <= 'F'; i++) { // 你的业务逻辑 }
如果两个区间的处理逻辑完全一致,可以把逻辑封装成函数,两个循环里都调用同一个函数即可,避免重复代码。
方法2:单循环加过滤判断
如果不想拆分循环,可以在原有循环里加条件跳过不需要的字符区间:
for (char i = '1'; i < 'H'; i++) { // 跳过'8'到'>'的不需要区间 if (i >= '8' && i <= '>') { continue; } // 你的业务逻辑 }
方法3:预定义允许的字符数组(扩展性最优)
如果后续需要调整遍历的字符范围、或者需要的离散区间更多,可以提前把所有要遍历的字符放到数组里,直接遍历数组即可:
char allowed_chars[] = "1234567?@ABCDEF"; for (int i = 0; allowed_chars[i] != '\0'; i++) { char current = allowed_chars[i]; // 你的业务逻辑 }
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

