C ++如何让用户选择选择

时间:2017-04-27 23:42:36

标签: c++

您好我不知道如何让用户选择我在代码中提供的选项之一,如果他们选择了未给出的选项,那么我希望程序返回到最后一点。

这是我的代码

#include <iostream>
#include <string>

using namespace std;

int main()
{

//Welcoming message with date//
cout << "Welcome to FILM Screen Cinema" << endl;


cout << endl;
cout << "ENTER STAFF/OPERATOR'S NAME: ";
string name;
cin >> name;

cout << endl;
cout << "ENTER DATE:";
string date;
cin >> date;

cout << endl;
cout << "CHOOSE A MOVIE THAT IS SCREENING TODAY:" << endl;
cout << "[1] Deadpool" << endl << "[2] Goosebumps" <<endl;
string input;
cin >> input;


}

如果它选择一部电影,我希望用户输入1或2作为选择,但是如果他们输入任何其他数字,那么它应该说无效并允许他们再次输入1或2。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我怀疑您希望每个std::cin >> XXX调用实际查询用户输入。目前情况并非如此,例如当用户键入&#34; John Smith&#34;作为运营商的名称,name将设置为&#34; John&#34;,以下std::cin >> date重新使用其余部分&#34; Smith&#34;而不是再次要求输入。

要解决此问题,您可以使用std::getline

因此,代码的第一部分应替换为

std::cout << '\n';
std::cout << "ENTER STAFF/OPERATOR'S NAME: ";
std::string name;
std::getline(std::cin, name);

std::cout << '\n';
std::cout << "ENTER DATE:";
std::string date;
std::getline(std::cin, date);

std::cout << '\n';

对于验证输入的部分也是如此。现在,您只需要添加一个while循环,以便在前一个输入无效时继续询问用户输入新内容。

std::cout << "CHOOSE A MOVIE THAT IS SCREENING TODAY:\n";
std::cout << "[1] Deadpool\n"
          << "[2] Goosebumps\n";

std::string input;
std::getline(std::cin, input);

while(input != "1" && input != "2") {
    std::cout << "Invalid!\n\n";

    std::cout << "CHOOSE A MOVIE THAT IS SCREENING TODAY:\n";
    std::cout << "[1] Deadpool\n"
              << "[2] Goosebumps\n";
    std::getline(std::cin, input);
}

if (input == "1") {
    // do something
} else if (input == "2") {
    // do something else
}

顺便说一句,请考虑阅读Symfony documentation here“\n” or '\n' or std::endl to std::cout?