我收到一个我不理解的错误,因为我是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;
}
答案 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字符文字)
- ...包含多个c-char的普通字符文字是a 多字形文字。多字符文字,或普通文字 包含单个c-char的字符文字在...中不可表示 执行字符集,有条件支持,类型为int,和 具有实施定义值。
醇>
我认为您要将密码与整数文字和用户名与字符串文字进行比较
if (username == "admin" && password == 852456 )
那就是你必须使用字符串文字和整数文字。
如果您的编译器支持C ++ 2014,您可以在整数文字中使用单引号。例如
if (username == "admin" && password == 852'456 )
字符串文字用双引号括起来。
答案 2 :(得分:0)
而不是使用单引号,你应该使用双引号,因为用户名是字符串类型而不是字符类型。将密码设置为密码整数类型。它不会要求任何类型的引号或加倍。