使用诸如YES和NO之类的用户输入来控制C ++中的程序流

时间:2010-10-31 11:46:53

标签: c++ if-statement

我正在创建一个使用if else语句的小程序,但不是使用数字来控制流程,而是希望能够使用yes和no来使控件工作;

例如:

cout << "would you like to continue?" << endl;
cout << "\nYES or NO" << endl;
int input =0;
cin >> input;
string Yes = "YES";
string No = "NO";

if (input == no)
{
    cout << "testone" << endl;
}
if (input == yes)
{
    cout << "test two" << endl;
         //the rest of the program goes here i guess?
}
else
{
    cout <<  "you entered the wrong thing, start again" << endl;
              //maybe some type of loop structure to go back
}

但我似乎无法得到任何变化的工作,我可以让用户输入0或1,但这似乎真的很愚蠢,我宁愿它尽可能自然,用户不说数字吗?

我也需要能够简单地添加更多的单词,例如“no NO No noo no n”都不得不表示没有

希望这有点道理

我也很想用窗口制作这个,但到目前为止我还没学过基本的c ++,而且我无法在网上找到有关基本Windows编程的好资源。

4 个答案:

答案 0 :(得分:4)

你不是在string阅读,而是在int阅读。

试试这个:

string input;

而不是

int input = 0;

此外,C ++区分大小写,因此您无法定义名为Yes的变量,然后尝试将其用作yes。他们需要处于相同的情况。

顺便说一句,您的第二个if语句应该是else if,否则如果您键入“否”,那么它仍会进入最后一个else块。

答案 1 :(得分:2)

首先,input必须是std::string,而不是int

此外,您已将yesno写错:

             v
if (input == No)
// ..
//                v
else if (input == Yes)
^^^^

如果您希望自己的程序使用“不能不......”,则可以使用std::string::find

if( std::string::npos != input.find( "no" ) )
// ..

与“是”相同。

另外,你可以这样做几乎不区分大小写 - 将输入转换为大写字母(或更低,无论如何),然后使用find。这样,yEs将是仍然是一个有效的答案。

答案 2 :(得分:0)

string input;
cin >> input;
if (input == "yes"){

}
else if (input == "no"{

}

else {
    //blah
}

答案 3 :(得分:0)

bool yesno(char const* prompt, bool default_yes=true) {
  using namespace std;
  if (prompt && cin.tie()) {
    *cin.tie() << prompt << (default_yes ? " [Yn] " : " [yN] ");
  }
  string line;
  if (!getline(cin, line)) {
    throw std::runtime_error("yesno: unexpected input error");
  }
  else if (line.size() == 0) {
    return default_yes;
  }
  else {
    return line[0] == 'Y' || line[0] == 'y';
  }
}