检查用户是否存在(所有用户帐户都存储在文件中)

时间:2013-07-20 07:33:40

标签: c++ io

我正在学习C ++中的文件处理。只是为了测试我写了这个小代码。基本上我想要做的是使用文件处理来创建用户帐户程序。所以我想在我的程序中使用if elsewhile来比较文件中的数据。

例如,如果用户输入他的用户名“john”,程序应该能够在文件中搜索名称john,如果存在,则应该允许用户登录并与密码相同。

我编写的代码只是一个文件编写测试。请帮我解决实际的代码。我是初学者,如果它太傻了就很抱歉。

谢谢!

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<fstream>
#include<string.h>

using namespace std;
void main () {
  ofstream file;
  file.open("C:\tests1.txt", ios::trunc);

  char name[50];
  cout<<"\nEnter your name: ";
  cin>>name;
  file<<"Username: "<<name;
  file.close();
  cout<<"Thank you! Your name is now in the file";

  ifstream file("tests1.txt");
  if(file=="Username: Chinmay") {
    cout<<"If else successfull\n";
  } else {
    cout<<"If else failed\n";
  }
  _getch();
}

伙计们请帮帮我!!

2 个答案:

答案 0 :(得分:1)

这是我的两个解决方案,它们非常简单粗糙。你可能需要改进。希望这可以帮助你开始。

  • 如果您只有少量用户且需要经常查看用户帐户,则可以读入所有用户名和密码,并将其存储在std::map中,其中密钥为{{ 1}},值为username

    假设passwordusername存储在文件中,如下所示(以空格分隔):

    password

    您可以实现上述想法:

    user1 password1 user2 password2
    
  • 如果用户数量很大,您可以逐个读取用户名和密码,并立即查看帐户。

    ifstream fin;
    fin.open("input.txt");
    map<string, string> m;
    while(!fin.eof())
    {
        string username, password;
        fin >> username >> password;
        m[username] = password;  // store in a map
    }
    fin.close();
    // check account from user input
    string user, pwd;
    cin >> user >> pwd;
    if (m.find(user) != m.end())
        if (m[user] == pwd)
            // login
        else
            // wrong password
    else
        // reject
    

答案 1 :(得分:0)

#include<iostream>
#include<conio.h>
#include<vector>
#include<string>
#include<fstream>
using namespace std;
int main() {
    string name = "";
    string line = "";
    fstream f;
    f.open("a.txt");

    cout<<"Enter name"<<endl;
    cin>>name;
    if (f.is_open())
  {

      while (f.good() )
    {


         getline(f,line);
         if(line==name)
         {
            cout<<"You can log in";
                        //Or do whatever you please in here after the username is found in the file

         }
    }
    f.close();
  }
else 
  {
      cout << "Unable to open file"; 
  }

    getch();
    return 0;
}