项目 在 C++ 技能树

按关键词查找笔记

编写可复用的 C++ 笔记搜索工具,用相对路径标识文档、建立 ASCII 词索引并进行文档级 AND 查询,返回全部匹配笔记和真实原始行。

项目C++

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

按关键词查找笔记 是一门面向已有语言基础的学习者的 C++ 项目课程。你将把记得的几个词变成可复用的本地搜索工具,找出不同文件夹中的全部匹配笔记,并显示这些词实际出现的位置。

课程包含 2 个引导实验和 1 个独立挑战。你先在索引中建立词与文档身份的关系,再组合查询词,找出包含全部词的所有文档,最后把相同规则应用到另一组笔记。每个实验都独立提供笔记和起始代码,不依赖上一环境中的文件。

你将学到什么

完成本课程后,你将能够:

  • 使用相对路径标识文档,让不同文件夹中的同名文件保持独立;
  • 用 map 和 set 建立词到文档集合的索引,不因词重复出现而重复登记文档;
  • 应用基于 ASCII 字母的完整词规则,并忽略 ASCII 字母大小写;
  • 对候选集合进行 AND 组合,返回包含全部查询词的每份文档;
  • 输出真实路径、行号和原始匹配行,不重复显示同一行;
  • 重新运行程序,根据当前练习笔记重建索引,同时保留参考原件。

本课程适合谁

本课程适合希望使用标准容器和文件输入,制作规则清楚、可验证的实用搜索程序的 C++ 学习者。

前置要求: 掌握基本终端导航,熟悉 C++ 字符串、函数、vector、文件流和基本异常。引导实验会介绍所需的 map、set 操作、相对路径身份和集合交集。

学习环境: LabEx 提供浏览器中的预配置 Linux 环境,包含 C++17 编译器、起始代码、笔记集合和 Terminal。文件加载、分词和输出格式化的辅助代码已准备好。命令和程序消息使用英文;笔记文件名和文本保留提供的原始内容。

常见问题

全部查询词必须出现在同一行吗?

不需要。AND 条件作用于整份文档,不同词可以出现在不同行。结果会将包含任意查询词的每个原始行显示一次,便于你自行定位证据。

搜索支持所有语言吗?

词的规则仅限连续 ASCII 字母,并只将 ASCII 大写转为小写;其他字节作为分隔符。cat 和 catalog 是不同的词。Unicode 文件名和原始行文本会保留,但项目不提供通用多语言分词。

修改后的笔记如何进入索引?

每次调用程序都会重新读取当前文件,建立新的内存索引。编辑、新增或删除获准的练习笔记后,重新运行即可。参考原件保持不变;没有持久索引或后台刷新服务。

教师

labby
Labby
Labby is the LabEx teacher.

为您推荐

no data