Почему функция не прекращает работу по return [закрыт]

156
18 декабря 2021, 06:50
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 2 года назад.

Улучшить вопрос

Писал мини программу в Qt Creator. заметил странный баг при проверке (ValidateVariant) введенных данных (GetVariant). Если сначала ввести пустую строку, символы или неверный номер, а затем правильную команду, то функция вместо выхода заного себя запускает, вместо выхода.

bool ValidateVariant(string &str){
    if ((regex_match(str, regex("\\s"))) || str.empty()){
        cout << "\x1b[2C\x1b[0;31m"
                "Введена пустая строка."
                "\n\x1b[2C\x1b[0;37m>";
        return false;
    }
    if (str.find_first_not_of("1234567890") != string::npos){
        cout << "\x1b[2C\x1b[0;31m"
                "Введен текст. Должно быть число."
                "\n\x1b[2C\x1b[0;37m>";
        return false;
    }
    if (!(stoi(str) < 6 && stoi(str) > 0)){
        cout << "\x1b[2C\x1b[0;31m"
                "Нет комманды под таким номером."
                "\n\x1b[2C\x1b[0;37m>";
        return false;
    }
    return true;
}
int GetVariant(){
    string variant("");
    while (getline(cin, variant)) {
        if (ValidateVariant(variant)) return stoi(variant);
        else GetVariant();
    }
}

Answer 1

Закомментируйте/удалите эту строчку.

// else GetVariant();

Рекурсия здесь не нужна.

READ ALSO
Почему после некоторой операции одна из веток узла ссылается на саму себя?

Почему после некоторой операции одна из веток узла ссылается на саму себя?

Cтруктура node имеет в своих полях указатели на node

147
Как подключить .obj файл в QtCreator

Как подключить .obj файл в QtCreator

У меня есть скомпилированный из ассемблераobj файл с функцией

236
Проблема с потоками c++

Проблема с потоками c++

впервые работаю с потоками и возникла проблема в синхронизации

146
Выход из бесконечного цикла без команды ввода

Выход из бесконечного цикла без команды ввода

Реально ли сделать выход из цикла без команды ввода? Допустим идет бесконечный цикл и в любой момент я нажимаю ENTER и цикл прекращаетсяЕсли...

173