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

85
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

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

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

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

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

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

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

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

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

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

103