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.pswp.cn/web/45266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45266.shtml
英文地址,請注明出處:http://en.pswp.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;。…

枚舉的高階用法之枚舉里寫方法以及注入spring的bean

1、前言 一般我們使用枚舉都是用來定義一些常量。比如我們需要一個表示訂單類(pc訂單、手機訂單)的常量,那我們就可以使用枚舉來實現,如下: AllArgsConstructor public enum OrderTypeEnum{PC("PC", "電腦端"),PHONE("PHONE", "手機端&quo…

[計網初識2]web的3個核心標準html,url,http

學習內容 HTML,URL,HTTP的構成 1.規范web的3個核心標準&#xff1f; HTML(Hyper Text Markup Language),規范網頁內容和版面布局的表示標準。URL(Uniform Resource Locator)&#xff0c;規范網頁識別符格式和含義的表示標準。HTTP(HyperText Transfer Protocl),規范游覽器如…

JIRA的高級搜索JIRA Query Language(JQL)詳解

JIRA的高級搜索功能非常強大&#xff0c;允許用戶通過JIRA Query Language&#xff08;JQL&#xff09;來構建復雜的查詢。以下是一些常用的高級搜索用法和示例&#xff1a; 1. 基本語法 JQL的基本語法包括字段、運算符和值的組合。例如&#xff1a; field operator value2.…

<數據集>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…

bug定位策略

前提--用戶環境層面 hosts異常&#xff1a;hosts文件主要是加快某個域名或者網站的解析速度&#xff0c;從而達到快速訪問的作用&#xff0c;也可以屏蔽網站。hosts異常可能會導致部分網頁無法訪問&#xff0c;能夠加載&#xff0c;但是網頁無法正常顯示&#xff1b;測試環境臟…

記錄些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;需要轉換&…

ReactRouter v6升級的步驟

React Router v6 引入了一個 Routes 組件&#xff0c;它有點像 Switch &#xff0c;但功能要強大得多。與 Switch 相比&#xff0c; Routes 的主要優勢在于&#xff1a; <Routes> 中的所有 <Route> 和 <Link> 都是相對的。這導致在 <Route path> 和 &…

項目文章|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;經學位評定委員會…