上述代码报错:case表达式不是常量
时间: 2024-11-30 20:13:55 浏览: 5
计算机二级C语言考点18switch-case语句.pdf
这段代码中出现错误是因为在C++的switch语句里,case标签通常需要一个常量表达式,而直接使用变量`str1`, `str2`, ..., `str5`是不行的。这实际上是一个编译错误,因为在编译阶段无法确定这些变量是否会为空,因为它们的值在运行时才会确定。
解决这个问题的一种方法是在switch之前对每个变量的状态进行条件判断,然后分别处理。比如可以先将变量的`isEmpty()`结果存储在一个临时变量中,再作为case标签:
```cpp
bool isEmpty1 = str1.isEmpty();
bool isEmpty2 = str2.isEmpty();
// ... 然后在switch里使用isEmpty1, isEmpty2等
switch (true) {
case (isEmpty1):
result = 0;
break;
case (isEmpty2):
result = 1;
break;
// ... 接下来继续添加剩下的case
}
```
这样,在编译期间就能得到明确的case表达式了。
阅读全文