c++ - 如果前一个字符相同则跳过数组中的一个字符

标签 c++ switch-statement cstring

我正在遍历 chars 数组以进行一些操作。如果有两个相同的相邻字符,我想“跳过”一次迭代。

例如x112abbca
跳过------------^

我有一些代码,但它并不优雅,想知道是否有人能想出更好的方法?我在 switch 语句中有一些 case,如果我不必在 切换

switch(ent->d_name[i])
{
            if(i > 0 && ent->d_name[i] == ent->d_name[i-1])
                continue;
            case ' ' :
            ...//code omited
            case '-' :
            ...
}

顺便说一句,一位讲师曾经告诉我“避免continue,除非需要很多代码来替换它们”。有人支持吗? (实际上他对 break 也是这么说的)

最佳答案

if外面switch .

虽然我不反对使用 continuebreak ,这次您当然可以绕过它们,根本不需要很多代码:只需还原条件并将整个 switch 语句放在 if block 中。

回答修正后的问题:什么是干净的取决于很多因素。这个字符列表要考虑多长时间:你应该自己迭代它们,还是使用来自 <algorithm> 的实用函数? ?无论如何,如果您多次引用同一个字符,也许您应该给它起一个别名:

std::string interesting_chars("-_;,.abc");

// ...
for (i...) {
  char cur = abc->def[i];
  if (cur != prev || interesting_chars.find(cur) == std::string::npos)
      switch (current) // ...

关于c++ - 如果前一个字符相同则跳过数组中的一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166328/

相关文章:

c++ - C++中的C字符串比较问题

c++ - 测量分支被错误预测的频率

c++ - 接受 lambda 问题的模板化函数

c++ - 空/空字符串检查 : CPU overhead

c# - 带 or 的 CSharp 开关表达式和带条件的默认保护

c - 如何将许多 if 语句压缩成更小、更易读的内容?

c++ - 如何在 Ubuntu 中构建 OpenSMILE?

c++ - Qt - 清理和重建后的 "This does not seem to be a debug build"

java - 避免在 Jbehave 步骤中使用 switch 语句