Странная зацикливающаяся ситуация, не знаю, что ее вызывает

Возникли проблемы с кодом, и я не могу до конца разобраться. Этот код:

int main()
{
int choice;

while (choice != -1)
{
system("cls");
std::cout << "Main Menu: " << std::endl
<< " 1. Encode." << std::endl
<< " 2. Decode." << std::endl
<< "-1 to exit." << std::endl;

std::cin >> choice;

switch (choice)
{
case 1:
encode();
break;
case 2:
decode();
break;
case -1:
break;
}
}

getchar();
return 0;

}

void encode()
{
std::string plainText;
std::string encText = "Test";

std::cout << "Enter text to be encrypted.\n";

getline(std::cin, plainText);

for (int x = 0; x < plainText.length(); x++)
{
//encText += plainText.substr(x, x + 1);
}

std::cout << encText;
getchar();

return;
}

Если я введу ‘1’ при первом выборе cin >>, я перейду в encode (), когда он там вводится, любой текст приводит к тому, что программа возвращается к времени, выполняет system («cls»), а затем возвращается обратно «Введите текст для шифрования». вниз в кодировании ().

Любая помощь? Я невежественен.

1

Решение

Если вы хотите выйти из while цикл после encode() или же decode()Приходится whileсостояние Вы можете сделать это с помощью простой настройки choice в -1 после вызова функции:

         case 1:
encode();
choice = -1;
break;
case 2:
decode();
choice = -1;
break;

Просто чтобы вы знали, return в конце encode() вызывает encode() функция, чтобы закончить, а не main, Эта строка кода на самом деле ничего не делает; так как после этого ничего нет, это все равно произойдет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]