搜索“$”返回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补充了一些澄清。