# PCLib
**Repository Path**: pcwqyy/PClib
## Basic Information
- **Project Name**: PCLib
- **Description**: Personal C++ lib by PCwqyy
PCwqyy 的个人 C++ 库
- **Primary Language**: C++
- **License**: MIT
- **Default Branch**: dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-04-02
- **Last Updated**: 2025-11-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PClib
[中文](ReadMe.md) | [English](ReadMe-EN.md)
  [](https://github.com/PCwqyy/PCLib) [](https://gitee.com/pcwqyy/PClib)
这是一个个人 C++ 库,其中某些功能仅在 Windows 上可用
## 功能
- 文本用户界面(TUI)
- 容器类
- IO & 文件操作
- Ansi 转义
- 一些算法
- 数学支持
- 颜色计算
- (Windows) Web 套接字(socket)
- (Windows) 控制台扩展
- 还有更多...
## 安装
克隆仓库并 include 头文件即可
```bash
git clone https://github.com/PCwqyy/PCLib.git
git clone https://gitee.com/pcwqyy/PClib.git
```
## 联系
作者英语水平有限,如果发现拼错等还请多多包涵
邮箱: w123567910@outlook.com
博客:[www.cnblogs.com/PCwqyy](https://www.cnblogs.com/PCwqyy)
## 许可证
该项目使用 [MIT License](https://opensource.org/licenses/MIT) 。
## 贡献
欢迎任何形式贡献!您可以通过以下方法参与:
1. 提交 issues 以报告错误或提议新功能
2. 提交 pull request 以修复问题
3. 改进文档
## 演示
[Cmd Fight](./demo/CmdFight/readme.md)
# PClib 1.2.1(未发布)
- TUI 库的 DOM 结构(这并不是一个小改动)
- 自动同步数据容器 `SyncedData`
# 更新日志
[历史](https://github.com/PCwqyy/PCLib/tree/Dev/ChangeLogHistory.md)
## 25v15a
- 写了一些注释文档
- 优化了 `Large`,但是暂时变成 unsigned 的了……
## 25v15b
- 重新添加了 `Large` 的符号
## 25v15c
- 添加了 `pc::Exception` 类,用于管理异常
- 完善了 `Large` 的异常处理
## 25v15d
- 注释和拼写
## 25v16a
- 开始写 DOM 树
## 25v16b
- 开始写 PCML 解析器
- 考虑把 TUI 改名为 *钼 Molybdenum*?
## 25v16c
- 元素 PCML 解析器完成,尚未调试
## 25v16d
- `Element::QuerySelectorAll()` 的标签、类、ID选择器完成,后代选择器完成,差一个子元素选择器
- 修复了 `pc::File::String()` 总会多一个 `\377` 的问题
## 25v16e
- 修复了 `PCML::Make()` 的严重逻辑错误
- 完成了 `Element::QuerySelectorAll()`
## 25v17a
- 添加了新的容器:`SyncedData`,用于创建一个实时相互同步的数据组,即修改一个值时,组内的其他变量会同步修改
## 25v17b
- 将 `SyncedData` 改为双端树,现在可以安全地析构了
## 25v18a
- 为 `SyncedData` 添加了拷贝函数,现在可以安全地拷贝了
- 将 `Element::ID`、`Element::ClassList` 改为 `Element::Attribute` 的映射而不是独立的变量,以匹配 Web DOM 的行为
- 将 `Element::QuerySelectorAll` 的返回类型改为指针指向原元素,以模仿 Web DOM 的行为
# 25v19a
- 回滚 `Command.hpp` 至 25v4a
- 改动 Cmd Fight 使其又可以编译