检查用户数据是否存在于 txt 文件中,需要反馈 C++ [已关闭]

Checking if the user data exists in a txt file, feedback required C++ [closed]

提问人:noobster 提问时间:11/15/2023 最后编辑:noobster 更新时间:11/15/2023 访问量:59

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

6天前关闭。

我正在尝试通过检查用户的数据是否在文本文件中来检查用户帐户是否存在。一般编码新手,一直在砸我的头,直到我让它工作(似乎)。

cout << "Account: ";
cin >> L_input.accName;
cout << "Password: ";
cin >> L_input.passW[1]; // input the pass and account

std::ifstream CheckExists;
CheckExists.open("PlzDontLeakThis.txt");  //opening the file

while (getline(CheckExists, print)) { // here the question starts
    lines++;
    if (print.find(L_input.accName, 0) != string::npos) {
        AccExists = true;
        if (print.find(L_input.passW[1]) != string::npos) {
            PassExists = true;
            messageoftheday();
            break;
        }
        else {
            system("cls"); 
            cout << "ERROR: Account or Password you entered is Invalid\nPlease try again\n\n";
            login();
        }
    }

}
CheckExists.close();

我想知道这段代码是否合乎逻辑,并征求您的意见。当 但它似乎有效。我为什么担心的是文件中有 3 个相同的帐户名,所以如果我删除 system(cls) 和 login();它对每个现有帐户名称条目重复循环。AccExists = truePassExists = false

C++ 循环 文件

评论

1赞 molbdnilo 11/15/2023
直到循环之后,您才知道您的搜索是否成功。您需要首先检查所有线路,同时跟踪您是否找到了要查找的内容。
1赞 molbdnilo 11/15/2023
顺便说一句:第二个元素是一个需要寻找的特殊东西。“CheckExists”和“print”是对象的奇怪名称;这些通常是名词。L_input.passW
1赞 463035818_is_not_an_ai 11/15/2023
不要砸你的头。这从来没有帮助过任何人。您可以执行的操作:编写测试。使用调试器。如果你需要别人的帮助,一定要发布一个最小的可重现的例子,因为对于你发布的代码,不可能从中理解它,几乎所有的东西都没有声明也没有定义。
1赞 463035818_is_not_an_ai 11/15/2023
...并且不要试图直接在代码中解决所有问题。您需要知道代码之前应该做什么。当文件包含相同的帐户名 3 次时,您希望发生什么?这不是关于删除或,而是关于首先决定所需的行为是什么。system(cls)login()
0赞 JaMiT 11/17/2023
“寻找你的意见” -- 意见是 Stack Overflow 的题外话。你可能正在寻找 Code Review

答: 暂无答案