2014-10-29 2 views
-2

Используя следующий код, я по какой-то причине не способным выйти из предусмотренных цикла:заявление перерыв не выйдет цикл

for(int i = 0; i < sizeof(boolForCharIsDigi)/sizeof(boolForCharIsDigi[0]); i++){ 
       if(boolForCharIsDigi[i] == false){ 
        hasPassed = false; 
        std::cin >> turnsDefined; 
        std::cout << "You may only use numbers to define the amount of turns. No decimals either." << std::endl << std::endl; 
        break; 
       }else if(boolForCharIsDigi[i] == true){ 
        hasPassed = true; 
       } 
} 

Варс: boolForCharIsDigi является BOOL массив, содержащий как ложные и истинные ценности. turnsDefined - это простой std::string. hasPassed - это еще одно нормальное значение bool: true/false.

Точно, что я хочу сделать: Используя оператор break, я хочу выйти из цикла for. (довольно просто).

+0

Каково значение 'sizeof (boolForCharIsDigi)' и 'sizeof (boolForCharIsDigi [0])' ?? – gldraphael

+2

Скомпилируйте все предупреждения и информацию об отладке ('g ++ -Wall -Wextra -g'). Затем ** используйте отладчик ** ('gdb')! –

+0

Используйте hasPassed и текущее состояние for-loop. Инициализировать его до истины. Вам не нужно передышку. – JustinDanielson

ответ

0

Что я сделал не так: Мой оператор break только вышел из одной вложенной петли. Внешний цикл просто перезапустил внутренний. Итак, что я сделал, добавьте bool и пусть внешний цикл проверяет, установил ли внутренний цикл значение true, чтобы он вышел.

Смежные вопросы