C++笔记之cout高亮输出以及纯C++实现一个彩色时钟

C++笔记之cout高亮输出以及纯C++实现一个彩色时钟

code review!

文章目录

  • C++笔记之cout高亮输出以及纯C++实现一个彩色时钟
    • 一.cout高亮输出
      • 1.1.运行
      • 1.2.代码一
      • 1.3.代码二
      • 1.4.重置终端的文本格式到默认设置说明
    • 二.纯C++实现一个彩色时钟
      • 2.1.运行
      • 2.2.main.cc
      • 2.3.cout带颜色打印输出技巧.

一.cout高亮输出

1.1.运行

在这里插入图片描述

1.2.代码一

在这里插入图片描述

代码

#include <iostream>// 定义ANSI转义序列来设置文本样式和背景
constexpr const char* HIGHLIGHT_STYLE = "\033[4;34;43m"; // 蓝色下划线文本和黄色背景
constexpr const char* RESET_STYLE = "\033[0m";           // 重置文本样式到默认int main() {// 使用定义好的ANSI转义序列来高亮打印测试信息std::cout << HIGHLIGHT_STYLE << "----------高亮打印测试------" << RESET_STYLE << std::endl;return 0;
}

1.3.代码二

在这里插入图片描述

代码

#include <iostream>int main() {// 使用定义好的ANSI转义序列来高亮打印测试信息std::cout << "\e[4;34;43m"<< "----------高亮打印测试------"<< "\e[0m" << std::endl;return 0;
}

1.4.重置终端的文本格式到默认设置说明

在这两段代码中:

<< "\e[0m" << std::endl;

<< "\033[0m" << std::endl;

唯一的区别是用于表示ANSI转义序列中的ESC(Escape)字符的表示方法不同。

  • "\e" 是一种在一些编译器和环境中支持的转义序列,用于表示ESC字符,其ASCII码值为27。
  • "\033" 使用八进制表示法表示同一个ESC字符(因为33是27的八进制表示)。

在功能上,两者完全相同,都用于重置终端的文本格式到默认设置。这意味着在打印了带有特定颜色和格式的文本之后,这些序列将终端格式重置,以防随后的输出也被同样的格式影响。

然而,不是所有的编译器都识别"\e"这种表示方式。例如,GCC和Clang通常支持它,但是根据C和C++的标准,这不是一个标准的转义序列。相比之下,"\033"是一个更加可移植和标准的方式来编写ESC,因为它是基于ASCII码值的八进制转义序列,所有符合标准的C和C++编译器都会支持它。

在编写依赖于特定终端特性的代码(如ANSI转义序列)时,通常推荐使用更加可移植的表示方法。因此,如果你不确定编译器是否支持"\e",使用"\033"是一个更安全的选择。

二.纯C++实现一个彩色时钟

文章主要内容抄自:《鲨鱼编程》公众号文章:C++控制台彩色时钟的实现.

2.1.运行

在这里插入图片描述

2.2.main.cc

在这里插入图片描述

代码

#include <iostream>  
#include <iomanip>  
#include <chrono>  
#include <thread>  // 定义ANSI转义序列来控制文本颜色  
const char* HOUR_COLOR = "\033[31m";  // 红色小时  
const char* MINUTE_COLOR = "\033[32m"; // 绿色分钟  
const char* SECOND_COLOR = "\033[33m"; // 黄色秒  
const char* RESET_COLOR = "\033[0m";   // 重置颜色  void print_colored_time() {  // 获取当前时间  auto now = std::chrono::system_clock::now();  auto now_time_t = std::chrono::system_clock::to_time_t(now);  std::tm* now_tm = std::localtime(&now_time_t);  // 输出彩色时钟  std::cout << HOUR_COLOR << std::setw(2) << std::setfill('0') << now_tm->tm_hour << ":"  << MINUTE_COLOR << std::setw(2) << std::setfill('0') << now_tm->tm_min << ":"  << SECOND_COLOR << std::setw(2) << std::setfill('0') << now_tm->tm_sec  << RESET_COLOR << std::endl;  
}  int main() {  while (true) {  print_colored_time();  std::this_thread::sleep_for(std::chrono::seconds(1)); // 等待1秒  // 清空控制台,以便下次输出  // 注意:这种清空控制台的方法在Windows和Linux/macOS上可能不同  // 下面的代码适用于Windows系统  // system("CLS");  // 对于Linux/macOS系统,可以使用  // system("clear");  }  return 0;  
}

2.3.cout带颜色打印输出技巧.

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

C++设计模式-- 2.代理模式

文章目录 代理模式 代理模式 代理模式的定义&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合 或不能直接引用另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式有以下三种角色&…

中本聪15年前剧本重演!“比特币上市首日”成绩斐然,ETF交易量冲破46亿美元!

2024年1月11日&#xff0c;美国证券交易委员会&#xff08;SEC&#xff09;以3-2投票结果批准比特币现货ETF。 2009年1月11日&#xff0c;中本聪向比特币早期开发者哈尔芬尼(Hal Finney)转出10枚比特币&#xff0c;使他成为世界上第一个透过交易获得比特币的人。随后&#xff0…

Python的内置函数 def __init__和__str__用法

__init__() 当使用类名&#xff08;&#xff09;创建对象时&#xff0c;会自动执行以下操作 __init__()是对象的的内置方法&#xff0c;是专门用来定义一个类 具有哪些属性的方法 class Person:def __init__(self):print("这是一个初始化方法")result Person() …

(26)Linux 进程通信之共享内存(共享储存空间)

共享内存是System V版本的最后一个进程间通信方式。共享内存&#xff0c;顾名思义就是允许两个不相关的进程访问同一个逻辑内存&#xff0c;共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一…

3D scanner with DLPC3478

https://www.bilibili.com/video/BV1vJ411J7ih?p3&vd_source109fb20ee1f39e5212cd7a443a0286c5 因数&#xff1a; 分别率波长pattern速度 DMD 与 DLPC匹配 3D scanner是结构光的概念走的 Internal pattern, 是DLPC内部提供图像给DMD External Pattern, 外部FPGA /MCU…

查看SQL Server的表字段类型、长度、描述以及是否可为null

文章目录 初步理解小步测试组合一下参考文章有更详细评述 继续理解得到大部分信息 本文参考&#xff1a;https://blog.csdn.net/josjiang1/article/details/80558068。 也可以直接点击这里文章链接&#xff1a; sql server查询表结构&#xff08;字段名&#xff0c;数据类型&a…

借款还款记录账本,借款还款账务处理

生活中&#xff0c;难免会有一些金钱上的往来。有时候&#xff0c;我们会因为忙碌或者其他原因&#xff0c;忘记了借款或还款的具体情况。现在【晨曦记账本】可以帮你可以清楚的掌握自己的借款和还款情况&#xff0c;无论是借款总额、还款总额&#xff0c;还是逾期未还的金额&a…

RT-Thread:STM32 PHY 调试,使用软件包 WIZNET 驱动 W5500

说明&#xff1a; 1. 本文记录使用 RT-Thread 软件包 WIZNET驱动 W5500 的调试笔记。 2. 采用 RT-Thread Studio 工程 STM32F407VET6 芯片&#xff0c;W5500 PHY芯片&#xff0c;两者之间使用SPI接口链接 。 注意&#xff1a; 1.在按流程建立工程&#xff0c;和移植完 wizn…

HCIP OSPF实验

任务&#xff1a; 1.使用三种解决ospf不规则区域的方法 2.路由器5、6、7、8、15使用mgre 3.使用各种优化 4.全网可达 5.保证更新安全 6.使用地址为172.16.0.0/16合理划分 7.每个路由器都有环回 拓扑图&IP划分如下&#xff1a; 第一步&#xff0c;配置IP&环回地址…

SIP-2401VP SIP音频广播模块SIP-2401VP SIP号角音柱音箱解码poe广播播放核心板

SV-2401VP和SV-2403VP网络音频模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编解码协议&#xff0c;可用于VoIP和IP寻呼以及高质量音乐流媒体播放等应用。同时…

centos 7.6 忘记root密码 怎么重置root密码

centos 7.6 忘记root密码 怎么重置root密码 1、 问题描述2、解决方法 1、 问题描述 centos 7.6 忘记root密码&#xff0c;登录不了root用户 2、解决方法 启动系统进入grub界面&#xff0c;按e进入编辑模式&#xff0c;找到含有quiet的这行。在这行最后 添加 rw init/bin/ba…

redis系列:01 数据类型及操作

redis的数据类型有哪些 string,list,set,sorted_set,hash 操作 sting: set name maliao get name exists name expire name 5 ttl name del name setex name 10 maliao 设置key和过期时间 setnx name maliao 当key不存在时才添加list&#xff1a; lpush letter a lpush le…