【问题标题】:How to compare a string as a variable to an another variable string? [closed]如何将作为变量的字符串与另一个变量字符串进行比较? [关闭]
【发布时间】:2017-03-10 17:05:41
【问题描述】:

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

我正在使用 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,它会说:Good Job!,if more Great Job!,如果 5,谢谢,然后循环执行。 如果你输入 666 它会问你是不是魔鬼还没到...

【问题讨论】:

  • 我没有看到你在任何地方比较 strings,只有整数和一个字符。关于字符比较,您通常如何编写字符文字?考虑一下例如之间的区别。数字1 和字符'1'
  • 请正确缩进您的代码。至于答案,请尝试输入一个字符串wariable:std::string yesNo; cin&gt;&gt;yesNo;
  • 如果你有教练,请去找他们寻求帮助。这段代码有很多问题。初学者误解了你的老师应该能够帮助解决的问题。
  • 如果您在if-statement 中测试两个备选方案,那么您可以使用一个非常有用的else-part 来简化代码。此外,char 类型的值用单引号书写,例如 '1'1'1' 是完全不同的值。

标签: c++ input


【解决方案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”、“No”。 “是”的数量更糟。
要减少比较次数,请在比较之前将字符串全部转换为大写或全部小写。

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2015-10-03
    • 2016-03-03
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多