c++ - 从 txt 文件中读取用户名和密码

标签 c++ readline fstream

我需要从一个 .txt 文件中提取用户名和密码,但我很难思考如何做到这一点。我将尝试对此进行分解。

  1. 打开文件
  2. 读入用户名
  3. 将用户名与用户输入进行比较
  4. 将密码与与用户名关联的用户输入进行比较
  5. 如果用户名和密码匹配则返回 true 或 false

是的,这是作业。我正在学习如何在等待 USPS 运送我的类(class) txt 书籍时使用 fstream。非常感谢您的帮助!

这是我目前所拥有的:

bool User::check(const string &uname, const string &pass)
{
    //open the file

    fstream line;
    line.open("users.txt");

    //Loop through usernames
        //If a username matches, check if the password matches
}

users.txt 文件如下所示:

ali87   8422

ricq7   bjk1903

messi   buneyinnessi

mike    ini99ou

jenny   Y00L11A09

end

最佳答案

我认为以下伪算法对您来说可能是更好的选择:

  1. 输入用户名、密码
  2. 打开文件流到文件
  3. 在流中搜索用户名匹配项(如果未找到则退出)
  4. 如果找到,将输入的加密密码与存储的加密密码进行比较。
  5. 如果找到,返回成功,否则,“没有找到用户名或密码不正确。”。

对于第 3 步,您会将每个行缓冲区存储在一个字符串中,您可以将其存储在一个字符串容器中。 理想情况下,在此处理过程中,您可以将字符串拆分为用户名、密码对,然后将它们存储在 std::map 中;然后通过 map.find(input username) == input password 访问它。

您不需要存储 map 超过登录过程的持续时间,然后您应该丢弃 map (可能作为局部函数变量)。

如果您的程序确实有目的,这是理想的,否则,就让它运行 :)。

关于c++ - 从 txt 文件中读取用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761124/

相关文章:

c++ - 在C++中为char数组分配固定内存

bash - ~/.inputrc 中忽略 "set completion-ignore-case on "

while-loop - while 循环中使用的 BufferedReader readLine

c++ - 编译错误:ifstream::open 只接受引号 ""中的字符串值而不接受字符串变量

C++。写入相关文件后无法显示内容

c++ - set_difference并不总是返回正确的答案

c++ - 类型不完整错误(E0409、E0070、E0515)

c++ - 带汇编的有序二进制搜索 |递归与迭代与库

asp-classic - ASP Readline 非标准行尾

c++ - 关于比较从文件中读取整数的不同方式