答案是使用C++中的结构体和vector实现通讯录,通过菜单操作添加、查看和查找联系人。定义Contact结构体存储姓名和电话,利用std::vector管理联系人列表,提供添加、显示全部和按姓名查找的功能,结合命令行交互完成简易通讯录的核心逻辑。

C++实现一个简易通讯录功能,核心在于选择合适的数据结构来存储联系人信息,并围绕这个数据结构构建添加、查找、删除等基本操作。通常,我们会用到结构体(
struct
std::vector
解决方案: 在我看来,实现一个简易通讯录,最直观且易于上手的方式,就是定义一个
Contact
std::vector<Contact>
首先,我们定义联系人的结构:
#include <iostream>
#include <vector>
#include <string>
#include <limits> // For numeric_limits
// 定义联系人结构
struct Contact {
std::string name;
std::string phone;
// 构造函数,方便初始化
Contact(std::string n, std::string p) : name(std::move(n)), phone(std::move(p)) {}
// 打印联系人信息
void display() const {
std::cout << "姓名: " << name << ", 电话: " << phone << std::endl;
}
};
// 全局向量来存储所有联系人
std::vector<Contact> contacts;
// 添加联系人
void addContact() {
std::string name, phone;
std::cout << "请输入联系人姓名: ";
// 清除输入缓冲区,防止getline读取到之前的换行符
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, name);
std::cout << "请输入联系人电话: ";
std::getline(std::cin, phone);
contacts.emplace_back(name, phone);
std::cout << "联系人添加成功!" << std::endl;
}
// 查看所有联系人
void viewContacts() {
if (contacts.empty()) {
std::cout << "通讯录为空。" << std::endl;
return;
}
std::cout << "\n--- 通讯录列表 ---" << std::endl;
for (const auto& contact : contacts) {
contact.display();
}
std::cout << "------------------\n" << std::endl;
}
// 查找联系人
void searchContact() {
if (contacts.empty()) {
std::cout << "通讯录为空,无法查找。" << std::endl;
return;
}
std::string nameToSearch;
std::cout << "请输入要查找的联系人姓名: ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, nameToSearch);
bool found = false;
std::cout << "\n--- 查找结果 ---" << std::endl;
for (const auto& contact : contacts) {
if (contact.name == nameToSearch) {
contact.display();
found = true;
}
}
if (!found) {
std::cout << "未找到姓名为 '" << nameToSearch << "' 的联系人。" << std::endl以上就是C++如何实现简易通讯录功能的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号