我如何找到一个没有休息的案件;在switch语句中?

时间:2017-05-31 07:06:20

标签: c++ switch-statement

我在代码中发现了一个错误。在开始一个switch语句的新案例之前,我只是忘了break;。所以,代码看起来像

switch (nCounter)
{
case 1:
    *dReturnValue = 1.;
    // here should have been a break;
case 2:
    *dReturnValue = 2.;
    break;
default:
    *dReturnValue = 3.;
    break;
}

如何使用正则表达式查找两个案例(或case ... default:),而中间没有break;

由于

菲利普

2 个答案:

答案 0 :(得分:0)

对您的问题,最向后兼容的答案是这样的:

case(\n|[^bc]|c[^a]|ca[^s]|cas[^e]|b[^r]|br[^e]|bre[^a]|brea[^k])*case

link:)

阐释:

  1. 查找并使用单词case
  2. 查看并使用b以外的任何字母。
  3. 您还可以使用未跟b
  4. 的任何r
  5. 同样br后面没有e,依此类推break没有k
  6. 如果后跟单词case,请使用从第一个字符开始的brea的任何子字符串。
  7. 注释:

    这可以扩展到包括break以及除了空格和分号之外的任何内容,但我只想给你一般的想法(意味着这将在case breakthrough case上失败)。此外,单词case应该后面跟冒号。

答案 1 :(得分:0)

这是一种方式。有可能与开关/案例建立相同的逻辑,但有一点点诅咒。

注意在每种情况下使用lambdas来执行代码。这可确保只采用一个代码路径。

这是一个最小的例子。请注意,在优化版本中,这可能不比开关/案例效率低。

d occurs 1 times in the entered string.
e occurs 1 times in the entered string.
h occurs 1 times in the entered string.
i occurs 1 times in the entered string.
r occurs 1 times in the entered string.
s occurs 1 times in the entered string.
F occurs 2 times in the entered string.
1 occurs 1 times in the entered string.
2 occurs 1 times in the entered string.
3 occurs 1 times in the entered string.
4 occurs 1 times in the entered string.
5 occurs 1 times in the entered string.
6 occurs 1 times in the entered string.
7 occurs 1 times in the entered string.
8 occurs 1 times in the entered string.