用C++生成文件操作 编写一个简单的通讯录,在文件中记录朋友的姓名、性别、电话号,允许用户向其中添加信息,并 能根据姓名查询或显示所有信息。
时间: 2024-09-10 22:07:33 浏览: 24
在C++中,我们可以使用`fstream`库来进行文件操作,创建一个简单的通讯录程序。以下是一个基础的实现示例:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <map>
// 定义朋友的信息结构体
struct Friend {
std::string name;
char gender;
std::string phone_number;
};
// 向文件中添加朋友信息
void addFriend(std::ofstream& file, const Friend& friend_info) {
file << friend_info.name << "," << friend_info.gender << "," << friend_info.phone_number << "\n";
}
// 从文件中读取并显示所有朋友信息
void displayFriends(const std::ifstream& file) {
if (!file.is_open()) {
std::cout << "Error opening the file.\n";
return;
}
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
std::string name, gender, phone;
if (!(iss >> name >> gender >> phone)) { // 检查是否成功解析
std::cerr << "Invalid data in file.\n";
continue;
}
Friend friend_info = {name, gender[0], phone};
std::cout << "Name: " << friend_info.name << ", Gender: " << friend_info.gender << ", Phone: " << friend_info.phone_number << "\n";
}
file.close();
}
int main() {
// 文件路径
const std::string filePath = "contacts.txt";
try {
// 打开文件(如果不存在则创建)
std::ofstream createFile(filePath);
if (!createFile) {
std::cerr << "Failed to create file.\n";
return 1;
}
// 添加朋友
Friend new_friend = {"Alice", 'F', "123456789"};
addFriend(createFile, new_friend);
// 关闭文件
createFile.close();
// 显示已有的朋友信息
std::ifstream readFile(filePath);
displayFriends(readFile);
// 示例查询功能(这里仅演示,实际应用需提供输入提示)
std::string search_name = "Alice";
displayFriends(readFile);
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
这个程序首先会检查文件是否存在,然后添加一条新的朋友信息到文件中。接着,它会打开文件并读取所有的朋友信息,最后展示出来。对于查询功能,你可以让用户输入名字搜索特定的朋友。