0

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

例如,如果用户输入他的用户名“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();
}

大佬们请帮帮我!!

4

2 回答 2

1

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

  • 如果您的用户数量很少,并且需要经常检查用户帐户,则可以将所有用户名和密码读入,并将它们存储在 astd::map中,其中键是username,值是password

    假设usernamepassword存储在如下文件中(以空格分隔):

    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
    
  • 如果用户数量很大,可以一一读入用户名和密码,并立即查看账号。

    while(!fin.eof())
    {
        string username, password;
        fin >> username >> password;
        if (username == user)
        {
            if (password == pwd)
                // login
            else
                // wrong password
            break;
        }
    }
    // didn't find user and reject
    
于 2013-07-20T08:23:51.553 回答
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;
}
于 2013-07-20T07:56:53.270 回答