lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[c/cpp]:ANSI转义序列(终端显示)

 

 

 

 

一、说明

ANSI转义序列是一种通过特殊字符序列控制终端显示属性的标准化协议。其核心特征和功能如下:




--    基本结构‌

    --    以ESC字符(ASCII码27)和左方括号[开头
    
    
    --    支持三种表示方式:
        // c_code
        \033[  // 八进制形式
        \x1B[  // 十六进制形式
        \e[    // 转义字符简写




--    核心功能分类‌

    光标控制‌:        移动位置(H)、隐藏/显示(?25l/h)、保存/恢复位置(s/u)
    
    屏幕操作‌:        清屏(2J)、清除行(K)
    
    文本样式‌:        颜色(31m红字)、粗体(1m)、背景色(44m蓝底)
    
    特殊效果‌:        闪烁(5m)、反显(7m)




--    技术标准‌

    --    源自ANSI X3.64标准,后纳入ISO/IEC 6429国际标准
    
    --    取代了早期各终端厂商的私有控制协议


--    总结

    --    典型应用场景包括终端游戏开发、命令行进度条、日志着色输出等。
    --    需注意Windows原生CMD对部分序列支持有限,
    --    而现代终端模拟器(如Linux终端、Windows Terminal)通常完全兼容。

 

 

 

二、ASCII转义控制符内容

ANSI转义序列中类似\033[2J的终端控制码主要包括以下几类:




--    重要说明:        ASCII转移控制符,不包含冒号(:)




--    屏幕清除类‌

    \033[2J        完全清屏并移动光标到左上角
    
    \033[3J        清除滚动缓冲区历史
    
    \033[K        清除从光标到行尾的内容
    
    \033[1J        清除光标上方内容(保留下方)
    
    \033[J        清除光标下方内容(保留上方)




--    光标控制类‌

    \033[H                    移动光标到屏幕左上角
    
    \033[y;xH                移动光标到第y行第x列
    
    \033[nA                    光标上移
    \033[nB                    下移n行
    
    \033[s                    保存光标位置
    \033[u                    恢复光标位置
    
    \033[?25l                隐藏光标(l大写L)
    \033[?25h                显示光标
    




--    文本属性类‌

    \033[0m        重置所有格式
    
    \033[1m        高亮文本
    
    \033[5m        闪烁效果
    
    \033[7m        反色显示




--    颜色控制类‌

    \033[30-37m        设置前景色(黑/红/绿/黄/蓝/紫/青/白)
    
    \033[40-47m        设置背景色(同上色系)
    
    
    组合用法示例:        \033[47;31m        (白底红字)


    这些控制码通过组合使用可实现动态终端界面效果,如\033[2J\033[H实现完全清屏并重置光标,或\033[s\033[u\033[J实现局部刷新效果。




--    应用举例

    //c_code
    // 清屏
    printf("\033[2J");
    // 光标归位
    printf("\033[H");
    printf("%02d:%02d:%02d", h, m, s);
    
    //隐藏光标:
    printf("\033[?25l");
    //显示光标:
    printf("\033[?25h");

 

 

 

三、参考

 

  1.  \033[2J,这样类似的东西,还有哪些?  --  chat.baidu.com

 

  .

 

posted on 2025-08-25 02:26  lnlidawei  阅读(89)  评论(0)    收藏  举报