以下是一个 C++ 实现的密码校验程序,用于检查输入的字符串是否符合特定规则。
#include <bits/stdc++.h>
using namespace std;
/**
* 检查密码字符串是否符合规则:
* 1. 长度 6-12 字符
* 2. 至少包含:
* - 大写字母(A-Z) 或 小写字母(a-z)
* - 数字(0-9)
* - 特殊符号(!@#$)
* 3. 不允许其他字符
*/
bool check(string str) {
if (str.size() < 6 || str.size() > 12) {
return false;
}
bool hasUpper = false, hasLower = false;
bool hasDigit = false, hasSpecial = false;
for (int i = 0; i < str.size(); i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
hasLower = true;
}
else if (str[i] >= 'A' && str[i] <= 'Z') {
hasUpper = true;
}
else if (str[i] >= '0' && str[i] <= '9') {
hasDigit = true;
}
else if (str[i] == '!' || str[i] == '@' ||
str[i] == '#' || str[i] == '$') {
hasSpecial = true;
}
else {
return false; // 非法字符
}
}
return hasSpecial && (hasUpper + hasLower + hasDigit >= 2);
}
int main() {
string input;
cin >> input;
string current;
for (int i = 0; i <= input.size(); i++) {
if (input[i] == '\0' || input[i] == ',') {
if (check(current)) {
cout << current << endl;
}
current.clear();
}
else {
current += input[i];
}
}
return 0;
}