对某些代码有些麻烦,我无法深究它。这段代码:
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;
}
如果我输入&#39; 1&#39;在第一个cin&gt;&gt;选择,我进入encode(),一旦进入,输入任何文本会导致程序返回到while,执行系统(&#34; cls&#34;),然后再跳回到&#34;输入文本要加密。&#34; down in encode()。
有任何帮助吗?我一无所知。
答案 0 :(得分:1)
如果您想在while
或encode()
之后退出decode()
循环,则必须保持while
的状态。您可以通过在函数调用后简单地将choice
设置为-1
来执行此操作:
case 1:
encode();
choice = -1;
break;
case 2:
decode();
choice = -1;
break;
您知道,return
末尾的encode()
会导致encode()
功能完成,而不是main
。那行代码实际上什么也没做;因为它之后什么也没有,无论如何都会发生。