如何避免一次输入三个数字导致进入嵌套switch中的case

我正在使用嵌套循环switch语句
比如说

while(1){
cin>>
switch(a){
case 1:
cin>>
swtich(b){
case 1:
cin>>
case 2:
}
case 2:
...
}
}

有三个cin,而我如果在第一处直接输入三个数字(比如说1 2 3)会直接进入最里面的case
有什么办法可以避免这种情况吗?

while(1){
    cin>>a;
    getchar(); // 读取换行符
    switch(a){
        case 1:{
            cin>>b;
            getchar(); // 读取换行符
            switch(b){
                case 1:{
                    cin>>c;
                    getchar(); // 读取换行符
                    // ...
                    break;
                }
                case 2:{
                    // ...
                    break;
                }
            }
            break;
        }
        case 2:{
            // ...
            break;
        }
    }
}