You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++密码验证代码改造:添加'yat'前缀校验功能

密码验证功能升级解决方案

嘿,我来帮你搞定这个密码验证的功能!咱们一步步调整你的代码,满足「必须以'yat'为前缀」和「兼容任意长度密码」这两个核心要求,同时完善原有的长度校验逻辑。

核心修改思路

  • 把固定长度的char数组换成std::string:这玩意儿自动管理内存,完美支持任意长度的密码,再也不用受限于PASSWORD_SIZE的固定值了
  • 新增前缀校验逻辑:检查输入的密码前三位是不是严格等于"yat"
  • 调整长度校验:因为前缀占了3位,所以总密码长度至少要8位(也就是前缀+至少5位其他字符)
  • 完善输入循环:确保用户输入完全符合要求后才退出循环

修改后的完整代码

#include <iostream>
#include <string> // 引入string头文件,支持std::string

using namespace std;

// 密码有效性校验函数:检查前缀和长度
bool isValidPassword(const string& password) {
    // 先检查长度是否达标,同时检查前缀是否正确
    if (password.length() < 8) {
        cout << "Error: Password must be at least 8 characters long.\n";
        return false;
    }
    if (password.compare(0, 3, "yat") != 0) { // 检查前3位是否为"yat"
        cout << "Error: Password must start with 'yat' prefix.\n";
        return false;
    }
    return true;
}

int main() {
    string password; // 用std::string存储密码,支持任意长度
    bool isValid = false;

    while (!isValid) {
        cout << "Please enter a valid password:\n";
        cout << "- Must start with 'yat' prefix\n";
        cout << "- Must be at least 8 characters long\n";
        cout << "Enter password: ";
        getline(cin, password); // 读取完整输入,包括空格(如果需要的话)

        isValid = isValidPassword(password);
        if (!isValid) {
            cout << "Please try again.\n\n";
        }
    }

    cout << "Success! Your password is valid.\n";
    return 0;
}

关键代码解释

  1. std::string的使用:取代原有的固定长度char数组,不仅能支持任意长度的密码,还提供了length()、compare()、substr()等便捷方法,让字符串操作更简单安全。
  2. 前缀校验逻辑:password.compare(0, 3, "yat")是高效的前缀检查方式,参数分别是「起始位置」「检查长度」「目标字符串」,返回0表示匹配成功。你也可以用password.substr(0,3) == "yat",效果一样,只是compare在性能上略优。
  3. 双重条件校验:先检查长度是否≥8,再检查前缀是否正确,每次失败都会给出明确的错误提示,用户体验更好。
  4. 输入处理:用getline(cin, password)读取输入,能捕获包含空格的密码(如果你的需求允许密码带空格的话);如果不需要空格,用cin >> password也可以,它会自动忽略空格和换行。

内容的提问来源于stack exchange,提问作者Ragab Hesham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:07:30