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

Visual Studio中ifstream/ofstream问题:忘记密码功能返回最后注册密码

问题原因及修复方案

你的问题既不是未关联用户名密码,也不是ifstream读取方式导致,核心问题是找到匹配用户名后没有及时保存对应密码并终止循环:

  • 当前代码中,循环会从头到尾读取所有记录,即便找到目标用户名,spass变量仍会被后续记录的密码持续覆盖,最终输出的是文件最后一条记录的密码。
  • 你只标记了count=1表示找到账号,但没有在匹配时立即锁定对应密码,也没有停止循环。

修复后的代码片段

int count = 0;
string suserid, sid, spass;
cout << "Please enter your username to regain password.\n\n";
cin >> suserid;
ifstream f2("records.txt");

// 找到匹配项后立即保存密码并终止循环
while (f2 >> sid >> spass) {
    if (sid == suserid) {
        count = 1;
        break; // 找到目标后跳出循环,避免spass被后续数据覆盖
    }
}
f2.close();

if (count == 1) {
    cout << "Your account has been found.\n";
    cout << "Your password is: " << spass << endl;
}

额外优化建议

  • 如果文件中存在重复用户名,当前代码只会返回第一个匹配的密码,可根据需求添加重复用户名的处理逻辑。
  • 可以将用户信息读取到结构体或std::pair中,更清晰地关联用户名和密码,避免变量混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:02:01