我正在创建一个使用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编程的好资源。
答案 0 :(得分:4)
你不是在string
阅读,而是在int
阅读。
试试这个:
string input;
而不是
int input = 0;
此外,C ++区分大小写,因此您无法定义名为Yes
的变量,然后尝试将其用作yes
。他们需要处于相同的情况。
顺便说一句,您的第二个if
语句应该是else if
,否则如果您键入“否”,那么它仍会进入最后一个else
块。
答案 1 :(得分:2)
首先,input
必须是std::string
,而不是int
。
此外,您已将yes
和no
写错:
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';
}
}