zoukankan      html  css  js  c++  java
  • 【C++标准库】std::cout 输出流

    1.颜色显示

    终端显示字体背景和字体颜色等使用用法
      可输入以下指令查看其使用方法

    man console_codes
    1
      在命令行下能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如:
      printf(“33[0;30;41m color!!! 33[0m Hello ”);
      其中41的位置代表字的背景色, 30的位置是代表字的颜色,0 是字的一些特殊属性,0代表默认关闭,一些其他属性如闪烁、下划线等。ascii code 是对颜色进行调用的。
    33[ ; m …… 33[0m
      颜色的控制通过ESC字符(33)加”[“加颜色代码加”m”实现。ESC的ASCII码是十进制的27,八进制的033(33)。

      在 ANSI 兼容终端里,可以用彩色显示文本而不仅仅是黑白。但是我们自己编写的程序能否输出彩色的字符呢?当然答案是肯定的。下面的语句就输出高亮的黑色背景的绿色字。
      printf(“33[1;40;32m color!!! 33[0m hello ”);
      33 声明了转义序列的开始,然后是 [ 开始定义颜色。后面的 1 定义了高亮显示字符。然后是背景颜色,这里面是40,表示黑色背景。接着是前景颜色,这里面是32,表示绿色。我们用 33[0m 关闭转义序列, 33[0m 是终端默认颜色。通过上面的介绍,就知道了如何输出彩色字符了。

    字色 背景 颜色
    ---------------------------------------
    30 40 黑色
    31 41 紅色
    32 42 綠色
    33 43 黃色
    34 44 藍色
    35 45 紫紅色
    36 46 青藍色
    37 47 白色

    代码 意义
    ————————-
    0 终端默认设置(黑底白字)
    1 高亮显示
    4 使用下划线
    5 闪烁
    7 反白显示
    8 不可见

    printf("33[1;33m Hello World. 33[0m ");
    颜色列表如下:
    none = "33[0m"
    black = "33[0;30m"
    dark_gray = "33[1;30m"
    blue = "33[0;34m"
    light_blue = "33[1;34m"
    green = "33[0;32m"
    light_green -= "33[1;32m"
    cyan = "33[0;36m"
    light_cyan = "33[1;36m"
    red = "33[0;31m"
    light_red = "33[1;31m"
    purple = "33[0;35m"
    light_purple = "33[1;35m"
    brown = "33[0;33m"
    yellow = "33[1;33m"
    light_gray = "33[0;37m"
    white = "33[1;37m"

    字背景颜色范围:40--49 字颜色: 30--39
    40: 黑 30: 黑
    41:红 31: 红
    42:绿 32: 绿
    43:黄 33: 黄
    44:蓝 34: 蓝
    45:紫 35: 紫
    46:深绿 36: 深绿
    47:白色 37: 白色

    输出特效格式控制:

    33[0m 关闭所有属性
    33[1m 设置高亮度
    3[4m 下划线
    33[5m 闪烁
    33[7m 反显
    33[8m 消隐
    33[30m -- 33[37m 设置前景色
    33[40m -- 33[47m 设置背景色

    光标位置等的格式控制:

    33[nA 光标上移n行
    3[nB 光标下移n行
    33[nC 光标右移n行
    33[nD 光标左移n行
    33[y;xH设置光标位置
    33[2J 清屏
    33[K 清除从光标到行尾的内容
    33[s 保存光标位置
    33[u 恢复光标位置
    33[?25l 隐藏光标
    33[?25h 显示光标


    终端显示字体背景和字体颜色代码测试
    #include<stdio.h>
    #include<unistd.h>

    int main (int argc ,char *argv[])
    {

    while(1)
    {
    printf("************************* ");
    printf("33[0;30;41m color!!! 33[0m Hello ");
    printf("33[1;30;41m color!!! 33[0m Hello ");
    printf("33[4;30;41m color!!! 33[0m Hello ");
    printf("33[5;30;41m color!!! 33[0m Hello ");
    printf("33[7;30;41m color!!! 33[0m Hello ");
    printf("33[8;30;41m color!!! 33[0m Hello ");


    printf("************************* ");
    printf("33[0;30;41m color!!! 33[0m Hello ");
    printf("33[0;31;41m color!!! 33[0m Hello ");
    printf("33[0;32;41m color!!! 33[0m Hello ");
    printf("33[0;33;41m color!!! 33[0m Hello ");
    printf("33[0;34;41m color!!! 33[0m Hello ");
    printf("33[0;35;41m color!!! 33[0m Hello ");
    printf("33[0;36;41m color!!! 33[0m Hello ");
    printf("33[0;37;41m color!!! 33[0m Hello ");

    printf("************************* ");
    printf("33[0;30;40m color!!! 33[0m Hello ");
    printf("33[0;30;41m color!!! 33[0m Hello ");
    printf("33[0;30;42m color!!! 33[0m Hello ");
    printf("33[0;30;43m color!!! 33[0m Hello ");
    printf("33[0;30;44m color!!! 33[0m Hello ");
    printf("33[0;30;45m color!!! 33[0m Hello ");
    printf("33[0;30;46m color!!! 33[0m Hello ");
    printf("33[0;30;47m color!!! 33[0m Hello ");

    sleep(100);
    }
    return 0;

    }

    输出界面如下:


    注意,字体背景和字的颜色一样时,会看不见字了。
    ————————————————
    版权声明:本文为CSDN博主「夜风~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u014470361/article/details/81512330

    2.覆盖显示

    int n;                                                      // n为往前想要覆盖的行数
    std::cout << "33[nA" << std::endl;       // 将光标定位到 n 行前的开头处
    
    // 用空行清除(覆盖)掉原本的内容
    for (int i = 0; i < n; i++) {
        std::cout << "                                                      " << std::endl;
    }
    
    std::cout << "33[nA" << std::endl;       // 重新将光标定位到 n 行前的开头处
    
    // 打印新的内容
    for (int i = 0; i < n; i++) {
        std::cout << "NEW PRINT" << std::endl;
    }
    

      

    3.

  • 相关阅读:
    值币转换编程总结
    打印沙漏编程总结
    Leetcode每日一题 面试题 17.21. 直方图的水量
    VS2017-OPENGL配置glfw+glad
    OpenGL(二) 绘制一个三角形
    OpenGL(一) 渲染循环创建窗口
    Leetcode每日一题 1006.笨阶乘
    Leetcode每日一题 90.子集 II
    Leetcode每日一题 190.颠倒二进制位
    Leetcode 第243场周赛 创新奇智&力扣
  • 原文地址:https://www.cnblogs.com/SchrodingerDoggy/p/14072823.html
Copyright © 2011-2022 走看看