Возникли проблемы с кодом, и я не могу до конца разобраться. Этот код:
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»), а затем возвращается обратно «Введите текст для шифрования». вниз в кодировании ().
Любая помощь? Я невежественен.
Если вы хотите выйти из while
цикл после encode()
или же decode()
Приходится while
состояние Вы можете сделать это с помощью простой настройки choice
в -1
после вызова функции:
case 1:
encode();
choice = -1;
break;
case 2:
decode();
choice = -1;
break;
Просто чтобы вы знали, return
в конце encode()
вызывает encode()
функция, чтобы закончить, а не main
, Эта строка кода на самом деле ничего не делает; так как после этого ничего нет, это все равно произойдет.
Других решений пока нет …