首页 > 编程语言 >【C++进阶实战】电子词典

【C++进阶实战】电子词典

时间:2024-11-16 20:17:59浏览次数:3  
标签:std 进阶 用户 C++ 查询 单词 释义 电子词典

功能说明

  1. 查询单词:用户可以输入一个单词,程序将显示该单词的释义。
  2. 文件存储:使用文件来存储单词和释义,以便下次启动程序时仍然可用。
  3. 用户界面:提供简单的命令行界面,让用户选择查询单词或退出程序。

示例代码

词库文件 dictionary.txt

假设我们有一个词库文件 dictionary.txt,内容如下:

apple 苹果
banana 香蕉
cherry 樱桃
dog 狗
elephant 大象
C++ 代码
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <string>

class Dictionary {
private:
    std::unordered_map<std::string, std::string> words;

public:
    Dictionary(const std::string& filename) {
        loadDictionary(filename);
    }

    void loadDictionary(const std::string& filename) {
        std::ifstream file(filename);
        if (!file.is_open()) {
            std::cerr << "无法打开词库文件:" << filename << std::endl;
            return;
        }

        std::string word, definition;
        while (std::getline(file, word, ' ') && std::getline(file, definition)) {
            words[word] = definition;
        }
    }

    std::string lookup(const std::string& word) const {
        if (words.find(word) != words.end()) {
            return words.at(word);
        } else {
            return "未找到该单词的释义。";
        }
    }
};

int main() {
    Dictionary dict("dictionary.txt");

    while (true) {
        std::cout << "\n电子词典菜单:" << std::endl;
        std::cout << "1. 查询单词" << std::endl;
        std::cout << "2. 退出" << std::endl;
        std::cout << "请选择一个选项: ";

        int choice;
        std::cin >> choice;

        if (choice == 1) {
            std::string word;
            std::cout << "请输入要查询的单词: ";
            std::cin >> word;
            std::cout << "释义: " << dict.lookup(word) << std::endl;
        } else if (choice == 2) {
            std::cout << "退出电子词典。" << std::endl;
            break;
        } else {
            std::cout << "无效的选项,请重新选择。" << std::endl;
        }
    }

    return 0;
}

代码解释

  1. Dictionary:

    • 成员变量
      • words:一个 unordered_map,用于存储单词及其释义。
    • 构造函数:初始化词典并加载词库文件。
    • 方法
      • loadDictionary:从文件中加载单词和释义。
      • lookup:查询单词的释义,如果单词不存在则返回提示信息。
  2. 主函数 main:

    • 创建一个 Dictionary 实例,词库文件名为 "dictionary.txt"
    • 提供一个简单的命令行界面,让用户选择查询单词或退出程序。
    • 根据用户的选择调用相应的 Dictionary 方法。

运行示例

假设用户输入如下:

电子词典菜单:
1. 查询单词
2. 退出
请选择一个选项: 1
请输入要查询的单词: apple
释义: 苹果

然后用户选择退出:

电子词典菜单:
1. 查询单词
2. 退出
请选择一个选项: 2
退出电子词典。

扩展功能

你可以进一步扩展这个电子词典的功能,例如:

  • 添加单词:允许用户添加新的单词和释义。
  • 删除单词:允许用户删除已有的单词。
  • 编辑单词:允许用户修改已有单词的释义。
  • 多语言支持:支持多种语言的单词查询。
  • 网络查询:从在线词典API获取单词释义。

标签:std,进阶,用户,C++,查询,单词,释义,电子词典
From: https://blog.csdn.net/weixin_42300449/article/details/143811941

相关文章

  • 穿越数据迷宫:C++哈希表的奇幻旅程
    文章目录前言......
  • [C++] 智能指针
    文章目录智能指针的使用原因及场景分析为什么需要智能指针?异常抛出导致的资源泄漏问题分析智能指针与RAIIC++常用智能指针使用智能指针优化代码优化后的代码优化点分析析构函数中的异常问题解决方法RAII和智能指针的设计思路详解什么是RAII?RAII的工作原理智能......
  • 多线程进阶
    1.常见的锁策略如果你自己实现一把锁,你认为标准库给你提供的锁不够用,这个时候你就需要关注锁策略,其实synchronized已经非常好用了足够覆盖大多数的使用场景。这里的锁策略不是和java强相关的,其他语言但凡涉及到并发编程,设计到锁都可以谈到这样的锁策略。1.1乐观锁VS悲观锁......
  • 【C++】深入理解自定义 list 容器中的 list_iterator:迭代器实现详解
    个人主页:起名字真南的CSDN博客个人专栏:【数据结构初阶】......
  • CSP/信奥赛C++语法基础刷题训练(9):洛谷P1035:[NOIP2002 普及组] 级数求和
    CSP/信奥赛C++语法基础刷题训练(9):洛谷P1035:[NOIP2002普及组]级数求和题目描述已知:Sn=1......
  • CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011 普及组] 数字反转
    CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011普及组]数字反转题目描述给定一个整数NNN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,......
  • C++ 创建一个线程
            C++11标准库引入了对多线程编程的支持,使得开发者能够以更加标准化的方式创建和管理线程。主要的线程管理方式是通过std::thread类,它可以用来创建、启动和管理线程。下面我将详细介绍如何使用C++标准库创建线程的方法,以及其他一些相关的工具类和概念。1.......
  • C++
    目录基础数据类型运算符流程控制函数指针与引用数组面相对象类的设计和对象的创建构造函数和析构函数常函数与常对象友元运算符重载封装(encapsulation)继承(inheritance)多态(polymorphism)结构体模板STL标准模板库容器算法迭代器基础进制注释:单行注释、多行注释数据类型标识符......
  • c++的static和extern
    首先这是一个static和extern的例子:#include<bits/stdc++.h>usingnamespacestd;inta(intb,intc){intd;d=rand()%3+1;externintd;return0;}intmain(){a(1,2);staticintd;cout<<d;return0;}实际上extern就是隐藏变......
  • 【C++类和对象基础篇下】再谈</|\>类和对象【完结撒花】
    --------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤:再长的路,一步步也能走完,再短的路,不迈开双脚永远无法到达。你终会发现,拒绝放弃的那些努力,是多么值得!----------------------......