【发布时间】:2018-05-30 20:21:23
【问题描述】:
我想查看用户输入的密码是有效还是无效。对于这种情况,有效密码是至少包含一个大写字母、一个小写字母、一个数字和一个美元符号 ($) 的密码。当我搜索美元符号时,编译器会抛出错误:
ISO C++ 禁止指针和整数的比较
这就是我搜索美元符号的方式:
for(int i = 0; i < x.length(); i++) {
if(x[i] == "$") {
dlr = 1;
}
}
这是完整的程序:
#include <iostream>
#include <string.h>
using namespace std;
int main () {
string x("");
cin >> x;
bool upr = 0;
bool lwr = 0;
bool dlr = 0;
bool num = 0;
for(int i = 0; i < x.length(); i++) {
if(isupper(x[i])) {
upr = 1;
}
if(islower(x[i])) {
lwr = 1;
}
if(x[i] == "$") {
dlr = 1;
}
if(isdigit(x[i])) {
num = 1;
}
}
if(upr == lwr == dlr == num == 1) {
cout << "The password is valid";
} else {
cout << "The password is invalid";
}
cout << dlr;
return 0;
}
【问题讨论】:
-
提示:
"$"和'$'是两个截然不同的东西。 -
'$' 单引号不是双引号
-
那些密码要求太糟糕了,所以希望你能解决这个问题,除非这是一个纯粹的学术练习。
-
有一个单独的问题:“upr == lwr == dlr == num == 1` 没有做任何明智的事情。
-
@tadman 是的,这只是一个练习。