编写C++代码时需要编写注册和登录功能,此时若msg.txt文件中有以下信息且都以@ 左右两边作为账号跟密码,且都按行存储,该如何编写:wyj@2402625 lyf@2404625 cjl@2425625 wyj@2424+2579
时间: 2024-10-18 07:10:07 浏览: 20
在C++中实现这样的注册和登录功能,通常会涉及读取文本文件、分割账号和密码,并将用户信息存储在一个数据结构(如映射或容器)中以便后续查找。以下是一个简化的示例,使用`std::ifstream`读取文件并使用`std::map`存储用户名和密码:
```cpp
#include <iostream>
#include <fstream>
#include <map>
#include <string>
std::map<std::string, std::string> load_users(const std::string& filename) {
std::map<std::string, std::string> users;
std::ifstream file(filename);
if (file.is_open()) {
std::string line;
while (std::getline(file, line)) {
size_t pos = line.find("@");
if (pos != std::string::npos) {
std::string username = line.substr(0, pos);
std::string password = line.substr(pos + 1);
users[username] = password;
}
}
file.close();
} else {
std::cerr << "Failed to open the file." << std::endl;
}
return users;
}
bool authenticate(const std::map<std::string, std::string>& users, const std::string& username, const std::string& password) {
auto it = users.find(username);
if (it != users.end()) {
return it->second == password; // 比较密码是否匹配
}
return false;
}
int main() {
std::string filename = "msg.txt";
std::map<std::string, std::string> registered_users = load_users(filename);
// 注册和登录部分可以这样处理:
std::string input_username, input_password;
std::cout << "Enter username for login: ";
std::cin >> input_username;
std::cout << "Enter password: ";
std::cin >> input_password;
if (authenticate(registered_users, input_username, input_password)) {
std::cout << "Login successful.\n";
} else {
std::cout << "Invalid credentials.\n";
}
return 0;
}
```
阅读全文