开发者

Read Usernames and Passwords from a txt file

开发者 https://www.devze.com 2023-02-28 00:15 出处:网络
I need to pull usernames and passwords from a .txt file a开发者_StackOverflow中文版nd I am having a difficult time wrapping my mind around how exactly to do this. I\'ll try to break this down.

I need to pull usernames and passwords from a .txt file a开发者_StackOverflow中文版nd I am having a difficult time wrapping my mind around how exactly to do this. I'll try to break this down.

  1. Open the file
  2. Read in the Usernames
  3. Compare a username against a user input
  4. Compare a password against a user input associated with the username
  5. return true or false if the username and passwords match

Yes, this is homework. And I am learning how to use the fstream while waiting for USPS to ship my class txt book. Your help is greatly appreciated!

Here is what I have so far:

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
}

The users.txt file looks like this:

ali87   8422

ricq7   bjk1903

messi   buneyinnessi

mike    ini99ou

jenny   Y00L11A09

end


I think the following pseudo-algorithm may be a better option for you:

  1. Input username, password
  2. Open file stream to file
  3. Search stream for username match (exit if non found)
  4. If found, compare encrypted input password against stored encrypted password.
  5. If found, return success, else, "No username found or password incorrect.".

For step 3, you would store each line buffer in a string, which you could store in a container of strings. Ideally, during this processing, you might split the string into a username, password pair, and then store them in a std::map; and then access this via map.find(input username) == input password.

You shouldn't need to store the map for more than the duration of the login process, you should then discard the map (maybe as a local function variable).

If your program actually has a purpose, this is ideal, otherwise, just get it working :).


I included iostream, fstream and cstring. And using namespace std.

int main()
{
char login_password[20];
char stored_password[20];   
char login_username[20];
char stored_username[20];

fstream pull("users.txt",ios::in);
if (!pull) { 
    cout<<"File not loaded!"<<endl;
    return -1; 
}
cout<<"Username: ";
cin>>login_username;
while(strcmp(login_username,stored_username)){ 

//if login and stored usernames are equal, function strcmp returns 0,
//at first loop they are certainly not, so it is: while(1)

    pull>>stored_username;
    if(pull.eof()){   //if it is the end of file
        cout<<"Username does not exist. "<<endl;
        return -1;  
    }
}
pull>>stored_password; 

//since username and password are in the same line, password next to
//correctly inputted username is saved in stored_password

cout<<"Password: ";   
//now user enters password to confirm username
cin>>login_password;
while(strcmp(stored_password,login_password)){
    cout<<"Wrong password. "<<endl;
    cout<<"Try again: ";
    cin>>login_password;
}
cout<<"Login successful."<<endl;
return 0;
}

users.txt looks like this:

  • Lena84 uzumymw
  • Doris20 kjkszpj

there is one white space between username and password.(also without bullets)


Try this: http://www.learncpp.com/cpp-tutorial/136-basic-file-io/

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号