You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用switch处理vector<string>中char时输出异常的原因咨询

问题解答:Switch语句触发所有Case分支的原因

你的代码里的switch语句缺少break关键字,这就是匹配到case 'a'后,后续所有case分支也被执行的核心原因。

C++中switch语句的执行逻辑是:当匹配到目标case标签后,程序会从该位置开始顺序执行后续所有代码,直到遇到break关键字或者整个switch语句结束。你当前的代码里,每个case分支都没有添加break,所以匹配到case 'a'后,会依次执行case 'a'、case 'b'、case 'c'里的输出语句,不会自动跳出switch结构。

修改后的代码如下:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<string> v = {"a", "a", "a"};
    for(int i = 0; i < 3; i++) {
        switch(v[i][0]) {
            case 'a':
                cout<<"case a"<<"\n";
                break; // 加入break跳出当前switch
            case 'b':
                cout<<"case b"<<"\n";
                break;
            case 'c':
                cout<<"case c"<<"\n";
                break;
        }
    }
}

修改后运行的输出为:

case a
case a
case a

(注:因为原代码循环执行3次,所以会输出3行"case a";如果需要和你给出的预期输出一致,可将循环条件改为i < 1)

内容的提问来源于stack exchange,提问作者Ajaykrishnan R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:12:38