假设pwd.csv中奇数行存int类型的id,偶数行存string类型的密码,用C++编写readUser函数,把所有用户的id、密码读到map <int, string> users
时间: 2024-12-19 08:25:15 浏览: 5
get-pwd.rar_pwd c++_数据库密码_获取软件密码
在C++中,你可以使用`fstream`库来读取CSV文件,并利用`std::map`存储用户数据。首先,确保已经包含了必要的头文件:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <string>
```
然后,定义一个`readUser`函数,它接受文件名作为输入,并将数据加载到`map<int, std::string>`中:
```cpp
std::map<int, std::string> readUser(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
throw std::runtime_error("Failed to open the file");
}
std::map<int, std::string> users;
std::string line;
int lineNumber = 0;
while (std::getline(file, line)) {
lineNumber++;
std::stringstream ss(line);
std::string token;
// 如果是奇数行,假设它是整数ID
if (lineNumber % 2 == 1) {
if (!(ss >> token)) {
throw std::runtime_error("Invalid ID format in line " + std::to_string(lineNumber));
}
users[token] = "";
}
else { // 偶数行,假设它是字符串密码
getline(ss, token, ',');
users[userLineNumber - 1] = token; // 更新上一行的密码,因为偶数行对应的是上一条记录的密码
}
}
return users;
}
```
在这个例子中,我们逐行处理文件,如果是奇数行就认为是ID,如果是偶数行则认为是密码。注意,由于偶数行代表的是前一行的密码,所以我们在读取偶数行时需要先更新`users`中对应ID的值。
阅读全文