IF声明中的多个condiotions

时间:2015-08-19 21:59:10

标签: c++

我收到一个我不理解的错误,因为我是C ++的新手。 if语句在条件中有问题:

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main()
{
    string username;
    int password;

    cout << " Welcome User, Please Login." << endl;
    //Username
    cout << "Username: ";
    cin >> username;
    //Password
    cout << "\nPassword: ";
    cin >> password;

    if (username == 'admin' && password == '852456')
        cout << "Welcome." <<endl;
    else
        cout << "Wrong credentials." <<endl;

    return 0;
}

3 个答案:

答案 0 :(得分:5)

if (username == 'admin' && password == '852456')

应该是

if (username == "admin" && password == 852456)

使用'admin'没有意义,这些标记仅适用于char alpha = 'a'等字符。 "用于字符串(多个字符)。数字不需要其中任何一个,它们只是数字。

答案 1 :(得分:1)

虽然密码声明为int

int password;

您正在使用多字符文字'admin'和'852456'

if (username == 'admin' && password == '852456')
               ^^^^^^^^                ^^^^^^^^

实现定义了哪个整数值。

根据C ++标准(2.14.3字符文字)

  
      
  1. ...包含多个c-char的普通字符文字是a   多字形文字。多字符文字,或普通文字   包含单个c-char的字符文字在...中不可表示   执行字符集,有条件支持,类型为int,和   具有实施定义值
  2.   

我认为您要将密码与整数文字和用户名与字符串文字进行比较

if (username == "admin" && password == 852456 )

那就是你必须使用字符串文字和整数文字。

如果您的编译器支持C ++ 2014,您可以在整数文字中使用单引号。例如

if (username == "admin" && password == 852'456 )

字符串文字用双引号括起来。

答案 2 :(得分:0)

而不是使用单引号,你应该使用双引号,因为用户名是字符串类型而不是字符类型。将密码设置为密码整数类型。它不会要求任何类型的引号或加倍。