1

一些代码遇到了一些麻烦,我无法深入了解它。这段代码:

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"),然后立即跳回到“输入要加密的文本”。在编码()中。

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

4

1 回答 1

1

如果您想在orwhile之后退出循环,则必须满足' 条件。您可以通过在函数调用之后的简单设置来做到这一点:encode()decode()whilechoice-1

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

只是让您知道,return最后encode()会导致encode()函数完成,而不是main. 那行代码实际上什么也没做。因为它之后什么都没有,无论如何它都会发生。

于 2013-02-06T01:20:10.077 回答