我的程序在第一次迭代后不会接受输入

时间:2021-05-21 09:23:09

标签: c++ input

我是编码新手,C++ 是我的第一门语言, 所以我制作了这个程序,它在从用户那里获取文本(字符串)输入后对文本进行加密和解密,我希望这个程序能够在 1 次运行中多次使用,所以我做了这个递归循环, 程序在第一次迭代中运行良好,但在第二次迭代中它只是跳过文本输入并向前移动

void cipherMain()
{
    std::string text;
    int selectOpt;

    std::cout << "Enter Text" << std::endl;
    getline(std::cin, text);
    // std::cin >> text;

    std::cout << "1.Cipher the text\n2.Decipher the text\n";
    std::cout << "Select your option: ";
    std::cin >> selectOpt;

    std::string cipheredText;
    std::string deCipheredText;

    switch (selectOpt)
    {
    case 1:
        cipheredText = cipher(text);
        std::cout << "Ciphered text is:\n\"" << cipheredText << "\"\n";
        system("pause");
        break;

    case 2:
        deCipheredText = dCipher(text);
        std::cout << "Deciphered text is:\n\"" << deCipheredText << "\"\n";
        system("pause");
        break;

    default:
        std::cout << "Invalid Input" << std::endl;
        break;
    }

    char restart;
    std::cout << "Enter 'y' to restart the program or 'n' to exit the program\n";
    std::cin >> restart;
    
    if(restart=='y')
    {
        system("cls");
        cipherMain();
    }
    else
    {
        system("exit");
    }
    
}

我尝试过的: 我用 getline(std::cin,text) 替换了 std::cin >> text; 这有效,但我希望我的程序采用整行,而不是只在输入中输入 1 个单词。 我想让我的 getline(std::cin,text) 工作

this is 1st iteration

this is my 2nd iteration where text input is ignored

0 个答案:

没有答案