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

C++ 使用ifstream读取用户数据库文件仅返回最后一行的问题解决

问题根因

你的代码存在的核心问题是:遍历文件匹配到目标用户后没有终止循环,循环会一直读完整个文件所有行,最终存储用户名/密码的变量会被文件最后一行(也就是最新注册用户)的内容覆盖,所以不管匹配到的是哪个用户,最终输出的都是最后一行的内容。

具体修改方法

你只需要在两个case的匹配判断逻辑里,匹配成功后加break终止循环即可,修改后的核心代码段如下:

case1(找回密码)循环部分修改

while(searchUserName >> su >> sp)
{
    if(su == searchUser)
    {
        count = 1;
        break; // 匹配到目标用户后直接终止循环,保留当前sp为对应密码
    }
}

case2(找回用户名)循环部分修改

while(searchPassword >> su2 >> sp2)
{
    if(sp2 == searchPass)
    {
        count = 1;
        break; // 匹配到目标密码后直接终止循环,保留当前su2为对应用户名
    }
}

补充注意事项

当前通过密码找回用户名的逻辑存在天然缺陷:如果有多个用户设置了相同的密码,只会返回第一个匹配到的用户的用户名,如果需要处理这种场景,你可以调整逻辑存储所有匹配的用户名再统一输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:54:03