搜索“$”会在C ++中返回错误

时间:2018-05-30 20:21:23

标签: c++ string search

我想查找用户输入的密码是有效还是无效。对于这种情况,有效密码是包含至少一个大写字母,一个小写字母,一个数字和一个美元符号($)的密码。当我搜索美元符号时,编译器会抛出错误:

  

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;
}

1 个答案:

答案 0 :(得分:1)

"$" C字符串,因为它使用双引号,因此它与const char*类似。你想要的是一个角色:

if(x[i] == '$') {
  // ...
}

'$'使用单引号并且是字符,或char,这是一个整数值。此处"integer"不得与特定的int类型混淆。