我正在学习C ++中的文件处理。只是为了测试我写了这个小代码。基本上我想要做的是使用文件处理来创建用户帐户程序。所以我想在我的程序中使用if else
或while
来比较文件中的数据。
例如,如果用户输入他的用户名“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();
}
伙计们请帮帮我!!
答案 0 :(得分:1)
这是我的两个解决方案,它们非常简单粗糙。你可能需要改进。希望这可以帮助你开始。
如果您只有少量用户且需要经常查看用户帐户,则可以读入所有用户名和密码,并将其存储在std::map
中,其中密钥为{{ 1}},值为username
。
假设password
和username
存储在文件中,如下所示(以空格分隔):
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;
}