如果调理和字符串

时间:2011-09-12 18:27:09

标签: c++ string if-statement

我是C ++的新手,非常感谢你的帮助!

我正在尝试为字符串创建一个'If'条件,例如:

#include <iostream>

using namespace std;

int main()
{
string message = "HELP";
int password;
cout<<"Please enter password";
cin<<password;
if (password = message);
}
else {
cout<<"Please try again...";
}
cin.ignor()
}

然而,Int不是我认为的字符串,当然还有Code :: Blocks它会发布在这种情况下它不起作用的错误。所以当C ++上的某个人为int X保存一个变量时基本就是这样; X = 3;例如,我们怎么能用字母做到这一点,以便我可以弹出条件消息框!

再次感谢您的帮助! = d

6 个答案:

答案 0 :(得分:2)

=是作业。 ==是比较。另外,不要在if语句后加分号。

答案 1 :(得分:2)

这是第一个问题:

int password;

password的数据类型也应该是std::string,因为messagestd::string(包含有效密码)。

所以第一个修复是这样的:

std::string password;

第二个问题是您在'='中使用if。使用'=='(相等运算符),而不是'='(赋值运算符)。

答案 2 :(得分:2)

#include <iostream> 

using namespace std; 

int main() 
{ 
   string message = "HELP"; 
   string password; 
   cout << "Please enter password"; 
   cin >> password; 
   if (password != message) 
   { 
      cout << "Please try again..."; 
   }
   return 0; 
}  

应该工作得更好。

答案 3 :(得分:1)

首先,如果您希望密码是任何东西,而不仅仅是数字,请使用std :: string。 要比较两个值,请使用== NOT =。

#include <string>
#include <iostream>

int main()
{
    std::string s1("First string");
    std::string s2("Second string");

    if(s1 != s2) {
        std::cout << "Strings don't match!" << std::endl;
    }
}

在您的代码中,您还没有正确关闭所有块并拼错拼写cin.ignore()。

答案 4 :(得分:0)

你在if条件下使用了错误的运算符。您使用了=哪个是赋值运算符。你需要使用==这是比较。在if不属于if之后你也有一个分号,并且你的语句的括号不对,

答案 5 :(得分:0)

您可能想要做的是:

#include <iostream>

// using namespace std; don't do this (its just lazy)
// Also its a bad habit to get into.

int main()
{
    std::string message = "HELP";

    // int password;  I assume you want a password to be a string
    std::string password;

    std::cout << "Please enter password"\n; // Added \n to make it print nicely.
    // cin<<password; The << is wrong should be >>
    //
    //                Bu this reads a single word (separated by spaces).
    //                If you want the password to hold multiple words then you need
    //                 to read the line.
    std::getline(std::cin, password);


    // if (password = message);  This is assignment. You assign message to password.
    //                           Also the ';' here means that nothing happens 
    //                           if it was true
    //
    //                           You are then trying to test the result of the 
    //                           assignment which luckily does not work.
    //                           Use the '==' to test for equality.
    if (password == message)
    {
    }
    else
    {
        cout << "Please try again...";
    }

    // cin.ignor()  This does nothing.
    //              What you are trying to do is get the program to wait 
    //              for user input. You should do something like this:

    std::cin.ignore(std::numeric_limits<std::streamsize>::max()); // Flush the buffer
    std::cout << "Hit enter to continue\n";
    std::cin.get(); 
}