搜索“$”返回C++中的错误
我想知道用户输入的密码是有效的还是无效的。对于这种情况,有效密码至少包含一个大写字母、一个小写字母、一个数字和一个美元符号$。当我搜索美元符号时,编译器抛出一个错误:搜索“$”返回C++中的错误,c++,string,search,C++,String,Search,我想知道用户输入的密码是有效的还是无效的。对于这种情况,有效密码至少包含一个大写字母、一个小写字母、一个数字和一个美元符号$。当我搜索美元符号时,编译器抛出一个错误: ISO-C++禁止指针与整数< /P>的比较 以下是我搜索美元符号的方式: for(int i = 0; i < x.length(); i++) { if(x[i] == "$") { dlr = 1; } } 这是完整的程序: #include <iostream> #include &l
ISO-C++禁止指针与整数< /P>的比较 以下是我搜索美元符号的方式:
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;
}
$是一个C字符串,因为它使用双引号,所以它类似于const char*。你想要的是一个角色:
if(x[i] == '$') {
// ...
}
其中,“$”使用单引号,是一个字符或字符,是一个整数值。这里不要与特定的int类型混淆。提示:$和“$”是两个非常不同的东西。$”单引号不加倍这些密码要求很糟糕,所以希望您可以解决这个问题,除非这是一个纯粹的学术练习。还有一个单独的问题:upr==lwr==dlr==num==1`没有任何意义。是的,这只是一个练习。@NeilButterworth是的,它的整数足够让编译器得到你所做的。@NeilButterworth我的意思是与整数或长整数相比,整数和整数不能混淆。@NeilButterworth我知道你在说什么,但我的意思是,当人们在C++上下文中说整数时,它通常指的不是整数,而不是数学中的实数。@ NeilButterworth补充了一些澄清。