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

C++简易登录项目开发咨询:如何创建用户名密码字典实现身份验证

C++ 简易登录程序多用户校验实现

你当前的实现仅支持单用户登录校验,要实现用户名与密码的对应字典存储,可以直接使用C++标准库提供的std::unordered_map(哈希表结构,查找效率更高)或std::map(有序树结构)作为存储容器,以下是具体实现方案:


原有单用户实现代码

#include <iostream>
#include <string>
using namespace std;

int main(){
    string username = "cool";
    string password = "lol";
    string user;
    string pass;
    cout << "Hello, Welcome to the App Login!" << std::endl;
    cout << "Enter Your username: ";
    cin >> user;
    if (user == username){
        cout << "Enter password: " << endl;
        cin >> pass;
        if (pass == password){
            cout << "Successful Login!" << endl;
        }
        else {
            cout << "Incorrect Password!" << endl;
        }
    }
    else {
        cout << "Incorrect Username!" << endl;
    }
    return 0;
}

改进后多用户字典校验实现

核心改动点

  • 引入<unordered_map>头文件,用哈希表存储所有合法的用户名、密码键值对
  • 校验逻辑改为先判断用户名是否存在,再比对对应密码
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main(){
    // 定义用户名-密码字典,可按需添加更多用户
    unordered_map<string, string> user_db = {
        {"cool", "lol"},
        {"user1", "pass123"},
        {"admin", "admin@456"}
    };
    string user;
    string pass;
    cout << "你好,欢迎登录应用!" << endl;
    cout << "请输入用户名: ";
    cin >> user;
    // 先判断用户名是否存在于字典中
    if (user_db.find(user) != user_db.end()){
        cout << "请输入密码: " << endl;
        cin >> pass;
        // 比对输入密码和字典中存储的对应用户密码
        if (pass == user_db[user]){
            cout << "登录成功!" << endl;
        }
        else {
            cout << "密码错误!" << endl;
        }
    }
    else {
        cout << "用户名不存在!" << endl;
    }
    return 0;
}

可选优化建议

  • 生产环境不要明文存储密码,建议存储密码加盐后的哈希值,避免数据泄露后密码直接暴露
  • 可添加登录失败次数限制,超过阈值后锁定账号一段时间,防止暴力破解
  • 输入密码时可关闭控制台回显,避免输入内容被旁人偷窥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:27:05