IF语句中包含多个条件

Multiple condiotions in an IF Statement

本文关键字:条件 包含多 语句 IF      更新时间:2023-10-16

我得到一个错误,我不明白,因为我是新的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;
}

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

应该

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

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

虽然密码声明为int类型

int password;

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

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

这些整数值是实现定义的。

根据c++标准(2.14.3字符字面量)

  1. …包含一个以上c字符的普通字符字面量是amulticharacter文字。一个多字符文本,或一个普通字符中不能表示的单个c字符的字符字面量执行字符集,受条件支持,类型为int和有一个实现定义的值

我想你是要比较密码与整数字面值和用户名与字符串字面值

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

也就是说你必须使用字符串和整数字面值

如果编译器支持c++ 2014,则可以在整型文字中使用单引号。例如

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

字符串用双引号括起来。

如果用户名是字符串类型而不是char类型,则应该使用双引号而不是单引号。接下来是密码,它是整数类型。它不需要任何类型的单引号或双引号。