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

C++登录系统仅STL vector首个元素登录成功问题排查

问题根因

你的checkLogin函数存在两处逻辑错误,直接导致只有第一个用户可以登录成功:

  • 循环体内只要第一个用户比对不匹配就直接return false,会直接终止整个函数,不会继续遍历后续的用户数据
  • 循环终止条件写的是i < persoane.size() - 1,会直接跳过vector中存储的最后一个用户,永远不会对最后一个账号做校验
修复方案

直接修改checkLogin函数的逻辑即可,只有遍历完全部用户都找不到匹配项时,才返回登录失败:

bool checkLogin() {
    savePerson();
    string username;
    string userPassword;
    Person user;
    cout << "Specify the name:"; cin >> username;
    cout << "Specify password:"; cin >> userPassword;
    user.setNume(username);
    user.setParola(userPassword);
    // 修正循环边界,遍历所有用户
    for (int i = 0; i < persoane.size(); i++) {
        if (user.equalTo(persoane.at(i)))
        {
            return true;
        }
        // 匹配失败不直接返回,继续遍历下一个用户
    }
    // 所有用户遍历完成都没有匹配项,才返回失败
    return false;
}

如果发现vector存储的用户数据带多余的换行符、空格等不可见字符,可以额外在savePerson解析账号密码的逻辑中,增加对字符串首尾空白字符的过滤,避免因为不可见字符导致比对失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:01