如何将字符串作为变量与另一个变量字符串进行比较?

时间:2017-03-10 17:05:42

标签: c++ input

所以,我想从用户那里得到一个答案(是或否),如果是,那就做某事,如果没有,做其他事。

我正在使用c ++(使用Code :: Blocks),而且我是编程的初学者。 这就是我设法做的事情:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
char answer;
answer = 1;
int x;
x = 1;
int number1;
while ( x > 0 )
{  //Ez egy köszönés!
cout<<"Type in a number!\n";
 //Kérek egy számot
cin>> number1;
  cin.ignore();
 //Kiírom a számot
  cout<<"You entered: "<< number1 <<"\n";
if ( number1 == 666 )  //Ha number1 = 666 akkor kiírjuk hogy Are you the Devil?
{
    cout<<"Are you the Devil?\n";
    x = 0;
}
if ( number1 != 666 )
{
if ( number1 > 5 ) //Ha number1 nagyobb 5nél kiírjuk hogy Great Job!
{
      cout<<"Great job!\n";
}
if ( number1 < 5  )  //Ha number1 kisebb 5nél kiírjuk hogy Good Job!
{
      cout<<"Good job!\n";
}
if ( number1 == 5 )  //Ha number1 = 5 akkor kiírjuk hogy Thank you
{
    cout<<"Thank You\n";
}
}

cout<<"\n"; //sortörés
}
cin>> answer;
if ( answer == 1 )
{
    cout<<"OH GOD,NO!";
}
}

要求提供一个号码,如果你给它一个,如果它不那么棕褐色就会说:好工作!,如果更好的工作!,如果5谢谢你,并且循环做。 如果你输入666,它会问你是否是恶魔。在这里我想得到一个用户的输入,是或否如果否则它会说:哦上帝,不,如果是,我没有'到了那里......

1 个答案:

答案 0 :(得分:1)

用户确认的习语:

std::string answer;
std::cin >> answer;
// Convert to all lower case to reduce number of compares.
// Text is case-sensitive.
std::transform(answer.begin(), answer.end(),
               answer.begin(),
               std::tolower());

// Now compare
if (answer == "no")
{
 // ...
}

对于初学者,一个更简单的解决方案可能是要求单个字符响应:

std::cout << "Continue, Y/N?";
std::cout.flush();
char response;
std::cin >> response;
response = std::toupper(response);
if (response == 'Y')
{
 //...
}

编辑1:区分大小写
在C ++中,大写字母与小写字母不同 因此,例如,“否”与“nO”不同。 如果您不将字符串转换为一个案例(全部为低或全部为高),则必须检查每个句子:“no”,“nO”,“NO”,“No”。 “是”的数量更糟 要减少比较次数,请在比较之前将字符串转换为全部或更低。