C\C++ 终端输出带有颜色的字符

终端显示带有颜色的字符

终端显示带有颜色的字符

  • 终端显示带有颜色的字符
    • 背景:
    • 测试机器,win10系统, VS2022编写
    • 字体设置不同的颜色
    • 背景色
    • 光标移动 (这个用的估计不是很多)
    • 字体设置
    • 动态显示
    • C++ cout 也可以
    • 测试代码
    • 准确的说这个能力是shell窗口提供的,跟语言没有关系,一般输出到终端的都可以用这个方法。
  • 扩展

背景:

之前写过一个测试小工具就是测试读取OCR字符是否正确的工具,但是在显示窗口下只能显示白色字符,我希望是OCR正确识别的的显示绿色,错误识别的显示红色,这样一目了然,给老板做汇报的时候满屏幕花花绿绿的也显示自己水平高,后来找了半天资料引入了fmt库才实现显示。 今天在抖音刷到可以在printf函数设置显示颜色,然后做一下记录。

测试机器,win10系统, VS2022编写

字体设置不同的颜色

30 -37 用来显示字体的颜色 至于30到37显示那种颜色可以看截图,代码运行截图的

		// 30 -37  用来显示字体的颜色  printf("显示字体色\n");printf("\033[30m hello world\n");printf("\033[31m hello world\n");printf("\033[32m hello world\n");printf("\033[33m hello world\n");printf("\033[34m hello world\n");printf("\033[35m hello world\n");printf("\033[36m hello world\n");printf("\033[37m hello world\n");

在这里插入图片描述

背景色

		// 40 - 47 用来设置背景的颜色printf("显示背景色\n");printf("\033[40m hello world\n");printf("\033[41m hello world\n");printf("\033[42m hello world\n");printf("\033[43m hello world\n");printf("\033[44m hello world\n");printf("\033[45m hello world\n");printf("\033[46m hello world\n");printf("\033[47m hello world\n");

在这里插入图片描述

光标移动 (这个用的估计不是很多)

		// A 表示上移光标 B 表示下移光标 C表示右移光标 D表示左移光标 YXH设置光标的位置printf("光标移动\n\n");printf("\033[A     Ahello world\n");printf("\033[B     Bhello world\n");printf("\033[C     Chello world\n");printf("\033[D     Dhello world\n");

在这里插入图片描述

字体设置

		// 1m  是数字1 显示高亮, 如果不关闭下面打印的都高亮, 0m是关闭高亮 3m是斜体,4m是增加下划线5m让输出的内容闪烁, 7m反显示效果printf("\033[1m hello world \033[0m\n");printf(" hello world \n");		printf("\033[3m hello world\n");printf("\033[5m hello world\n");printf("\033[7m hello world\n");

在这里插入图片描述

动态显示

在这里插入图片描述
这个时间是可以刷新的,不太会接gif就不弄了。

	while (1){time_t cur = time(NULL);struct tm* t = localtime(&cur);printf("当前时间:%d: %d : %d\n", t->tm_hour, t->tm_min, t->tm_sec);printf("\033[K");	// K 表示清空后面的内容printf("\033[A");	// A表示向上移动一行,移动多行: 加上数字就行 \033[3A _sleep(1000);}

C++ cout 也可以

	cout <<"显示字体色\n";cout << "\033[30m hello world\n";cout << "\033[31m hello world\n";cout << "\033[32m hello world\n";cout << "\033[33m hello world\n";cout << "\033[34m hello world\n";cout << "\033[35m hello world\n";cout << "\033[36m hello world\n";cout << "\033[37m hello world\n";

在这里插入图片描述

测试代码

#include <iostream>
#include <time.h>
#pragma warning(disable:4996)        //关闭全部
using namespace std;
int main()
{//while (1)//{//time_t cur = time(NULL);//struct tm* t = localtime(&cur);//printf("当前时间:%d: %d : %d\n", t->tm_hour, t->tm_min, t->tm_sec);//printf("\033[K");	// K 表示清空后面的内容//printf("\033[A");	// A表示向上移动一行,移动多行: 加上数字就行 \033[3A //_sleep(1000);// 1m  是数字1 显示高亮, 如果不关闭下面打印的都高亮, 0m是关闭高亮 3m是斜体,4m是增加下划线5m让输出的内容闪烁, 7m反显示效果//printf("\033[1m hello world \033[0m\n");//printf(" hello world \n");		//printf("\033[3m hello world\n");//printf("\033[5m hello world\n");//printf("\033[7m hello world\n");// 30 -37  用来显示字体的颜色  //printf("显示字体色\n");//printf("\033[30m hello world\n");//printf("\033[31m hello world\n");//printf("\033[32m hello world\n");//printf("\033[33m hello world\n");//printf("\033[34m hello world\n");//printf("\033[35m hello world\n");//printf("\033[36m hello world\n");//printf("\033[37m hello world\n");// 40 - 47 用来设置背景的颜色//printf("显示背景色\n");//printf("\033[40m hello world\n");//printf("\033[41m hello world\n");//printf("\033[42m hello world\n");//printf("\033[43m hello world\n");//printf("\033[44m hello world\n");//printf("\033[45m hello world\n");//printf("\033[46m hello world\n");//printf("\033[47m hello world\n");// A 表示上移光标 B 表示下移光标 C表示右移光标 D表示左移光标 YXH设置光标的位置//printf("光标移动\n\n");//printf("\033[A     Ahello world\n");//printf("\033[B     Bhello world\n");//printf("\033[C     Chello world\n");//printf("\033[D     Dhello world\n");//getchar();//}cout <<"显示字体色\n";cout << "\033[30m hello world\n";cout << "\033[31m hello world\n";cout << "\033[32m hello world\n";cout << "\033[33m hello world\n";cout << "\033[34m hello world\n";cout << "\033[35m hello world\n";cout << "\033[36m hello world\n";cout << "\033[37m hello world\n";return 0;
}

准确的说这个能力是shell窗口提供的,跟语言没有关系,一般输出到终端的都可以用这个方法。

扩展

这位老哥写的比我清楚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口基础知识3:详解url

课程大纲 一、定义 URL即访问的链接&#xff0c;是Uniform Resource Locator的缩写&#xff0c;译为"统一资源定位符"。 URL是一种URI&#xff0c;它标识一个互联网资源&#xff0c;并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述&#xff0c…

SpringBoot详细解析

1.什么是springboot springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。那么spring对应springboot有什么缺点呢&#xff1f; spring项目搭建的缺点: 配置麻烦依赖tomcat启动慢 2.springboot的特点 自动配置 Spring Boot的自动配置是一个运行时&…

Docker 安装ros 使用rviz 等等图形化程序

Docker 安装ros 使用rviz 等等图形化程序 ubuntu 版本与ros 发行版本对应 如何安装其它版本ros 此时考虑使用docker 易于维护 地址&#xff1a; https://hub.docker.com/r/osrf/ros 我主机是 ubuntu22.04 使用这个标签 melodic-desktop-full 1 clone 镜像到本机 docker pu…

Android OkHttp3中HttpLoggingInterceptor使用

目录 一 概述1.1 日志级别 二 使用2.1 引入依赖2.2 创建对象2.3 添加拦截器 三 结果展示3.1 日志级别为BODY3.2 日志级别为BASIC3.3 日志级别为HEADERS 参考 一 概述 HttpLoggingInterceptor是OkHttp3提供的拦截器&#xff0c;用来记录HTTP请求和响应的详细信息。 1.1 日志级…

基于IDEA的Lombok插件安装及简单使用

lombok介绍 Lombok能以注解形式来简化java代码&#xff0c;提高开发效率。开发中经常需要写的javabean&#xff0c;都需要花时间去添加相应的getter/setter&#xff0c;也许还要去写构造器、equals等方法&#xff0c;而且需要维护。而Lombok能通过注解的方式&#xff0c;在编译…

Spring AOP 实现 Excel 导出统一处理

你好&#xff0c;我是柳岸花开。在实际开发中&#xff0c;经常会遇到需要导出 Excel 数据的需求。为了避免代码重复&#xff0c;我们可以使用 Spring AOP&#xff08;面向切面编程&#xff09;来实现 Excel 导出的统一处理。本文将介绍如何使用 Spring AOP 在项目中统一处理 Ex…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十三)-更换无人机控制器

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

<数据集>UA-DETRAC车辆识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;20500张 标注数量(xml文件个数)&#xff1a;20500 标注数量(txt文件个数)&#xff1a;20500 标注类别数&#xff1a;4 标注类别名称&#xff1a;[car, van, others, bus] 序号类别名称图片数框数1car201871259342…

钡铼ARMxy控制器在智能网关中的应用

随着IoT物联网技术的飞速发展&#xff0c;智能网关作为连接感知层与网络层的枢纽&#xff0c;可以实现感知网络和通信网络以及不同类型感知网络之间的协议转换。钡铼技术的ARMxy系列控制器凭借其高性能、低功耗和高度灵活性的特点&#xff0c;在智能网关中发挥了关键作用&#…

数据结构回顾(Java)

1.数组 线性表 定义的方式 int[] anew int[10] 为什么查询快&#xff1f; 1.可以借助O(1)时间复杂度访问某一元素&#xff0c; 2.地址连续&#xff0c;逻辑连续 3.数组长度一旦确定就不可以被修改 当需要扩容的时候需要将老数组的内容复制过来 在Java中数组是一个对象 Ar…

记录些Redis题集(2)

Redis 的多路IO复用 多路I/O复用是一种同时监听多个文件描述符&#xff08;如Socket&#xff09;的状态变化&#xff0c;并能在某个文件描述符就绪时执行相应操作的技术。在Redis中&#xff0c;多路I/O复用技术主要用于处理客户端的连接请求和读写操作&#xff0c;以实现高并发…

Python_使用pyecharts构建折线图

Pyecharts简介 Pyecharts是一款将python与echarts结合的强大的数据可视化工具&#xff0c;使用 pyecharts 可以生成独立的网页&#xff0c;也可以在 flask , Django 中集成使用。echarts &#xff1a;百度开源的一个数据可视化 JS 库&#xff0c;主要用于数据可视化。pyechart…

嵌入式linux相机 框图

摄像头读取数据显示到LCD流程 重点&#xff1a;摄像头数据&#xff08;yuyv&#xff0c;mjpeg&#xff0c;rgb&#xff09;&#xff08;640,320&#xff09;与LCD显示数据&#xff08;RGB&#xff09;&#xff08;480&#xff0c;240&#xff09;不同&#xff1b;需要转换&…

项目文章|EMBO J(IF=9.4):16S+代谢组解析肠道菌群代谢物改善高脂饮食诱导的胰岛素抵抗机制

肠道菌群及其代谢产物与肥胖相关疾病&#xff08;如2型糖尿病&#xff09;密切相关&#xff0c;但其因果关系和潜在机制尚不清楚。研究表明&#xff0c;肥胖与肠道微生物的丰度和多样性变化有关&#xff0c;例如&#xff0c;高脂饮食&#xff08;HFD&#xff09;诱导的肥胖会增…

AIGC率超标?掌握论文去AI痕迹的高效策略

随着 AI 技术迅猛发展&#xff0c;各种AI辅助论文写作的工具层出不穷&#xff01; 为了防止有人利用AI工具进行论文代写&#xff0c;在最新的学位法中已经明确规定“已经获得学位者&#xff0c;在获得该学位过程中如有人工智能代写等学术不端行为&#xff0c;经学位评定委员会…

ESP32CAM物联网教学11

ESP32CAM物联网教学11 霍霍webserver 在第八课的时候&#xff0c;小智把乐鑫公司提供的官方示例程序CameraWebServer改成了明码&#xff0c;这样说明这个官方程序也是可以更改的嘛。这个官方程序有四个文件&#xff0c;一共3500行代码&#xff0c;看着都头晕&#xff0c;小智决…

S7-200smart与C#通信

https://www.cnblogs.com/heizao/p/15797382.html C#与PLC通信开发之西门子s7-200 smart_c# s7-200smart通讯库-CSDN博客https://blog.csdn.net/weixin_44455060/article/details/109713121 C#上位机读写西门子S7-200SMART PLC变量 教程_哔哩哔哩_bilibilihttps://www.bilibili…

清朝嘉庆二十五年(1820年)地图数据

我们在《中国历史行政区划连续变化数据》一文中&#xff0c;为你分享了中国历史行政区划连续变化地图数据。 现在再为你分享清朝嘉庆二十五年&#xff08;1820年&#xff09;的地图数据&#xff0c;该数据对于研究历史的朋友应该比较有用&#xff0c;请在文末查看领取方式。 …

HTTP背后的故事:理解现代网络如何工作的关键(一)

一.HTTP是什么 概念 &#xff1a; 1.HTTP ( 全称为 " 超文本传输协议 ") 是一种应用非常广泛的 应用层协议。 2.HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议. 3.HTTP 往往是基于传输层的 TCP 协议实现的 . (HTTP1.0, HTTP1.1, HTTP2.0 均为 T…

2024世界人工智能大会(WAIC)学习总结

1 前言 在2024年的世界人工智能大会&#xff08;WAIC&#xff09;上&#xff0c;我们见证了从农业社会到工业社会再到数字化社会的深刻转变。这一进程不仅体现在技术的单点爆发&#xff0c;更引发了整个产业链的全面突破&#xff0c;未来将是技术以指数级速度发展的崭新时代。…