gpt4 book ai didi

c++ - 奇怪的循环情况,不知道是什么原因造成的

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:31 25 4
gpt4 key购买 nike

在处理某些代码时遇到了一些问题,我无法深入了解它。这段代码:

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;
}

如果我在第一个 cin >> 选择中输入“1”,我将进入 encode(),一旦在那里,输入任何文本都会导致程序返回 while,执行 system("cls"),然后立即跳回“输入要加密的文本”。在 encode() 中向下。

有什么帮助吗?我一无所知。

最佳答案

如果你想在 encode()decode() 之后退出你的 while 循环,你必须满足 while 的条件。您可以通过在函数调用后简单地将 choice 设置为 -1 来完成此操作:

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

请注意,encode() 末尾的 return 会导致 encode() 函数完成,而不是主要。那行代码实际上什么也没做;因为之后什么都没有,所以无论如何都会发生。

关于c++ - 奇怪的循环情况,不知道是什么原因造成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com