# TC_1 **Repository Path**: hellower114514/TC_1 ## Basic Information - **Project Name**: TC_1 - **Description**: 一个跨平台轻量级命令行操作库,支持文本带颜色样式输出、等待时间流等超多功能。 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: 537main - **Homepage**: https://sean537.github.io - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-08-10 - **Last Updated**: 2025-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TC.hpp - ✨ 跨平台终端控制头文件库 [![C++17](https://img.shields.io/badge/C%2B%2B-17%2B-blue.svg)](https://en.cppreference.com/w/cpp/compiler_support) [![平台](https://img.shields.io/badge/平台-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)] [![Header-Only](https://img.shields.io/badge/Header--Only-Yes-green.svg)] [![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) > 🚀 一个现代化的 C++17 终端控制库,支持彩色输出、字体样式、延时、进度条、终端控制等,跨平台、零依赖、纯头文件! --- ## ✨ 主要特性 - 🖥️ 跨平台:Windows/类Unix终端自动适配 - 🎨 丰富色彩:支持前景色、背景色、RGB、字体样式 - 💡 现代C++17,纯头文件,零依赖 - ⏱️ 延时与打字机特效 - 📊 进度条、链式API、终端尺寸/光标控制 - 🧩 代码风格简洁,易于集成 --- ## 🚀 快速上手 ### 1. 引入头文件 ```cpp #include "tc.hpp" ``` ### 2. 主要用法示例 ```cpp #include "tc.hpp" int main() { // 🌈 颜色与样式 tc::tout << TCOLOR_GREEN << "Hello world!" << TCOLOR_RESET << std::endl; tc::tout << TFONT_BOLD << "粗体文本" << TFONT_RESET << std::endl; tc::tout << TCOLOR_RGB(255,0,0) << "RGB红" << TCOLOR_RESET << std::endl; // ⏱️ 延时输出 tc::tout << "Wait..." << std::endl; tc::tsleep(1000); tc::tout << "Done!" << std::endl; // 🖨️ Python风格打印 tc::print("Hello ", "world!\n"); tc::println("年龄: ", 25, ", 分数: ", 95.5); // 🌈 彩色打印(支持多参数宏) tc::println(TCOLOR_RED, "红色文本"); tc::println(TCOLOR_GREEN, BCOLOR_YELLOW, "绿色文字,黄色背景"); tc::println(TCOLOR_BLUE, BCOLOR_WHITE, TFONT_BOLD, "蓝色粗体,白色背景"); // 🖋️ Printer链式API tc::printer() .moveCursor(10,5) .print("移动光标到(10,5)") .println(); // 📏 终端尺寸 auto size = tc::printer().getSize(); tc::println("终端大小: ", size.first, "x", size.second); // ⏳ 进度条 tc::ProgressBar bar(30, "█", "░", TCOLOR_GREEN); for (int i = 0; i <= 100; ++i) { bar.show(i / 100.0, "处理中..."); tc::wait(0.02); } bar.finish(); // 🖥️ 执行系统命令(如清屏) tc::systemConsole("echo TC systemConsole test"); // 🕒 获取系统时间 int year = tc::getSystemTime(SYS_YEAR); int month = tc::getSystemTime(SYS_MONTH); int day = tc::getSystemTime(SYS_DAY); int hour = tc::getSystemTime(SYS_HOUR); int minute = tc::getSystemTime(SYS_MINUTE); int second = tc::getSystemTime(SYS_SECOND); int timestamp = tc::getSystemTime(); // 默认Unix时间戳 tc::println("当前时间: ", year, "-", month, "-", day, " ", hour, ":", minute, ":", second, " (Unix: ", timestamp, ")"); // 🛡️ 检查系统环境 int os = tc::systemCheck(); switch (os) { case OS_WINDOWSNT11: tc::println("当前系统: Windows 11"); break; case OS_WINDOWSNT10: tc::println("当前系统: Windows 10"); break; case OS_WINDOWSNT6: tc::println("当前系统: Windows Vista/7/8/8.1"); break; case OS_LINUX: tc::println("当前系统: Linux"); break; case OS_MACOS: tc::println("当前系统: macOS"); break; case OS_BEOS: tc::println("当前系统: BeOS"); break; case OS_OS2: tc::println("当前系统: OS/2"); break; case OS_NEXTSTEP: tc::println("当前系统: NeXTSTEP"); break; // ...有更多系统的支持 default: tc::println("未知或其他系统, code=", os); } return 0; } ``` --- ## 🧩 主要API与宏 ### 🎨 颜色与样式(全局宏,直接用) ```cpp // 前景色 TCOLOR_RED, TCOLOR_GREEN, TCOLOR_YELLOW, TCOLOR_BLUE, TCOLOR_MAGENTA, TCOLOR_CYAN, TCOLOR_WHITE, TCOLOR_RESET // 背景色 BCOLOR_RED, BCOLOR_GREEN, BCOLOR_YELLOW, BCOLOR_BLUE, BCOLOR_MAGENTA, BCOLOR_CYAN, BCOLOR_WHITE, BCOLOR_DEFAULT // 字体样式 TFONT_BOLD, TFONT_FAINT, TFONT_ITALIC, TFONT_UNDERLINE, TFONT_BLINK_SLOW, TFONT_BLINK_FAST, TFONT_REVERSE, TFONT_CONCEAL, TFONT_CROSSED, TFONT_DEFAULT, TFONT_FRAKTUR, TFONT_DOUBLE_UNDERLINE, TFONT_NORMAL, TFONT_NOT_ITALIC, TFONT_NO_UNDERLINE, TFONT_NO_BLINK, TFONT_NO_REVERSE, TFONT_REVEAL, TFONT_NOT_CROSSED, TFONT_THICK, TFONT_RESET // RGB TCOLOR_RGB(r, g, b) ``` ### 字体样式宏(TFONT_XXX) | 宏名 | 效果 | ANSI码 | 兼容性说明 | |---------------------------|------------------|---------------|------------| | TFONT_BOLD | 粗体/加粗 | \033[1m | 大多数终端支持,Windows 10+ 支持 | | TFONT_FAINT | 微弱/淡色 | \033[2m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_ITALIC | 斜体 | \033[3m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_UNDERLINE | 下划线 | \033[4m | 大多数终端支持,Windows 10+ 支持 | | TFONT_BLINK_SLOW | 慢速闪烁 | \033[5m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_BLINK_FAST | 快速闪烁 | \033[6m | 很少终端支持,Windows 10+ 基本不支持 | | TFONT_REVERSE | 反色 | \033[7m | 大多数终端支持,Windows 10+ 支持 | | TFONT_CONCEAL | 隐藏 | \033[8m | 很少终端支持,Windows 10+ 基本不支持 | | TFONT_CROSSED | 删除线 | \033[9m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_DEFAULT | 默认字体 | \033[10m | 很少终端支持,Windows 10+ 不支持 | | TFONT_FRAKTUR | Fraktur字体 | \033[20m | 极少终端支持,实验性 | | TFONT_DOUBLE_UNDERLINE | 双下划线/粗体关闭| \033[21m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_NORMAL | 粗体/淡色关闭 | \033[22m | 大多数终端支持,Windows 10+ 支持 | | TFONT_NOT_ITALIC | 关闭斜体/Fraktur | \033[23m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_NO_UNDERLINE | 关闭下划线 | \033[24m | 大多数终端支持,Windows 10+ 支持 | | TFONT_NO_BLINK | 关闭闪烁 | \033[25m | 很少终端支持,Windows 10+ 基本不支持 | | TFONT_NO_REVERSE | 关闭反色 | \033[27m | 大多数终端支持,Windows 10+ 支持 | | TFONT_REVEAL | 关闭隐藏 | \033[28m | 很少终端支持,Windows 10+ 基本不支持 | | TFONT_NOT_CROSSED | 关闭删除线 | \033[29m | 部分终端支持,Windows 10+ 支持有限 | | TFONT_THICK | 粗体(别名) | \033[1m | 同TFONT_BOLD | | TFONT_RESET | 全部重置 | \033[0m | 大多数终端支持,Windows 10+ 支持 | > ⚠️ **兼容性说明**: > > - Linux/macOS 下主流终端(如 GNOME Terminal、iTerm2、Konsole、Alacritty 等)大多支持常用样式(粗体、下划线、反色、部分斜体/删除线)。 > - Windows 10 及以上原生终端支持大部分常用样式(粗体、下划线、反色),但对斜体、删除线、闪烁等支持有限。 > - 旧版 Windows CMD/PowerShell 仅支持极少数样式,建议升级或使用 Windows Terminal。 > - TFONT_FRAKTUR、TFONT_DEFAULT、TFONT_DOUBLE_UNDERLINE 等为扩展/实验性样式,极少终端支持。 用法示例:`tc::println(TCOLOR_RED, BCOLOR_YELLOW, TFONT_BOLD, "红字黄底粗体")` - `tc::tout`:流式输出(支持颜色/样式/延时) - `tc::print(...)` / `tc::println(...)`:多参数打印,支持颜色/样式宏 - `tc::printer()`:链式终端控制 ### ⏱️ 延时与等待 - `tc::tsleep(ms)` / `tc::tsleep_stream << ms` - `tc::wait(seconds)` - `tc::waitKey()` ### 📊 进度条 - `tc::ProgressBar bar(width, doneChar, todoChar, color)` - `bar.show(progress, msg)` - `bar.finish()` ### 🖥️ 系统相关API - `tc::getSystemTime(int type = SYS_TIMESTAMP)`:获取当前时间(年、月、日、时、分、秒、Unix时间戳) - `tc::systemConsole(const char* 或 std::string)`:执行系统命令 - `tc::systemCheck()`:检测当前操作系统,返回下表宏之一 #### 支持的系统宏 | 宏名 | 说明 | |------|------| | OS_WINDOWSNT11 | Windows 11 及更高 | | OS_WINDOWSNT10 | Windows 10 | | OS_WINDOWSNT6 | Windows Vista/7/8/8.1 | | OS_WINDOWSNT5 | Windows 2000/XP/2003 | | OS_WINDOWSNT4 | Windows NT 4.x | | OS_WINDOWSNT3 | Windows NT 3.x | | OS_WIN95 | Windows 95 | | OS_WIN98 | Windows 98 | | OS_WINME | Windows Me | | OS_WINCE | Windows CE | | OS_WINDOWS | 其他Windows | | OS_LINUX | Linux | | OS_ANDROID | Android | | OS_MACOS | macOS | | OS_IOS | iOS | | OS_BSD | BSD | | OS_UNIX | Unix-like | | OS_DOS | MS-DOS | | OS_BEOS | BeOS | | OS_HAIKU | Haiku | | OS_AIX | IBM AIX | | OS_SOLARIS | Solaris | | OS_MINIX | Minix | | OS_QNX | QNX | | OS_VMS | VMS/OpenVMS | | OS_AMIGAOS | AmigaOS | | OS_MORPHOS | MorphOS | | OS_FREEMINT | FreeMiNT | | OS_HPUX | HP-UX | | OS_IRIX | SGI IRIX | | OS_SCO | SCO UnixWare/OpenServer | | OS_OPENVMS | OpenVMS | | OS_RISCOS | RISC OS | | OS_OS2 | IBM OS/2 | | OS_NEXTSTEP | NeXTSTEP | | OS_UNKNOWN | 未知/其他 | #### 用法示例 ```cpp int os = tc::systemCheck(); switch (os) { case OS_WINDOWSNT11: tc::println("Windows 11"); break; case OS_LINUX: tc::println("Linux"); break; // ... 其他系统 ... default: tc::println("未知系统, code=", os); } ``` ### ⏱️ 获取系统时间 | 宏名 | 说明 | |------|------| | SYS_YEAR | 年 | | SYS_MONTH | 月 | | SYS_DAY | 日 | | SYS_HOUR | 时 | | SYS_MINUTE | 分 | | SYS_SECOND | 秒 | | SYS_TIMESTAMP | Unix时间戳(默认) | ```cpp int year = tc::getSystemTime(SYS_YEAR); int timestamp = tc::getSystemTime(); // Unix时间戳 ``` ### ⌨️ waitKey - `tc::waitKey()`:等待任意按键 - `tc::waitKey(char key)` / `tc::waitKey(int key)`:等待特定按键(如 tc::waitKey('A')、tc::waitKey(KEY_ESC)) #### 常用特殊按键宏 | 宏名 | 说明 | |------|------| | KEY_ESC | ESC | | KEY_SPACE | 空格 | | KEY_ENTER | 回车 | | KEY_TAB | Tab | | KEY_BACKSPACE| 退格 | | KEY_INSERT | Insert | | KEY_DELETE | Delete | | KEY_HOME | Home | | KEY_END | End | | KEY_PAGEUP | PageUp | | KEY_PAGEDOWN | PageDown | | KEY_UP | 上方向键 | | KEY_DOWN | 下方向键 | | KEY_LEFT | 左方向键 | | KEY_RIGHT | 右方向键 | | KEY_F1 ~ KEY_F12 | F1~F12 功能键 | ```cpp tc::waitKey(); // 等待任意键 // 等待按下A键 tc::waitKey('A'); // 等待ESC键 tc::waitKey(KEY_ESC); ``` --- ## 🛠️ 编译 - Windows: `g++ -std=c++17 test.cpp -o test.exe` - Linux/macOS: `g++ -std=c++17 -pthread test.cpp -o test` --- ## 📄 协议 MIT --- ## 🌐 联系 - 📥 电子邮件: