2重ループを抜ける
(1)フラグを用いる。
while(XXX){ /* ループ1 */ bool bFlg1 = false; bool bFlg2 = false; while(XXX){ /* ループ2 */ /* hogehoge */ if(ZZZ){ /* ループ1でcontinueしたい現象が ループ2内で発生 */ bFlg1 = true; break; } if(ZZZz){ /* ループ1でbreakしたい現象が ループ2内で発生 */ bFlg2 = true; break; } } if(bFlg1){ bFlg1 = false; continue; }else if(bFlg2){ bFlg2 = false; break; } /* hogehoge */ }
(2)ループ2を関数化する。
int sub2(){ while(XXX){ /* ループ2 */ /* hogehoge */ if(ZZZ){ /* ループ1でcontinueしたい現象が ループ2内で発生 */ return 1; } if(ZZZz){ /* ループ1でbreakしたい現象が ループ2内で発生 */ return 2; } } return 0; } void sub1(){ while(XXX){ /* ループ1 */ int iRc; iRc = sub2(){ if(iRc == 1){ continue; }else if(iRc == 2){ break; } /* hogehoge */ } return; }