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

news2024/9/28 10:08:25

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.coloradmin.cn/o/1363600.html

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

相关文章

常用Python自动化测试框架有哪些?

随着技术的进步和自动化技术的出现&#xff0c;市面上出现了一些自动化测试框架。只需要进行一些适用性和效率参数的调整&#xff0c;这些自动化测试框架就能够开箱即用&#xff0c;大大节省了测试时间。而且由于这些框架被广泛使用&#xff0c;他们具有很好的健壮性&#xff0…

蓝桥杯练习题(一)

&#x1f4d1;前言 本文主要是【算法】——蓝桥杯练习题&#xff08;一&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …

ts axios 指定返回值类型,返回数据类型不确定该怎么办 typescript

ts axios 指定返回值类型&#xff0c;返回数据类型不确定该怎么办 typescript 转到 ts 以来&#xff0c;一直有个问题困扰着我&#xff0c;就是每次用 axios 获取数据时&#xff0c;返回值 res 的类型都不能确定&#xff0c;这就导致编辑器一直提示我&#xff1a; 原因 原因是…

哪些软件可以把扫描的表格转成EXCEL

也可点击“软件下载” 一、点击“软件下载”下载安装软件后使用&#xff0c;或直接用网页版添加图片再点击“提交识别”来转换。 二、软件安装成功后将待识别的图片添加进去&#xff0c;点击“识别全部”即可&#xff0c;非常简单。

基于SpringBoot大药房管理系统(程序+数据库+文档)

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;摘 要 伴随着全球信息化发展&…

K8S-服务访问

1 Ingress简介 原理解析 Ingress是授权入站连接到达集群服务的规则集合。从外部流量调度到nodeport上的service从service调度到ingress-controlleringress-controller根据ingress[Pod]中的定义&#xff08;虚拟主机或者后端的url&#xff09;根据虚拟主机名直接调度到后端的一…

[java小贴士]关于double类型进行运算时有误差的相等判断的替代方式

double类型在进行运算时会产生误差, 在不能进行相等判断时可以用绝对值在小于某个范围来替代相等; 如果没有进行运算, 是查询得到或者直接赋值则可以正常进行判断相等

1868_C语言单向链表的实现

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/c_basic: little bits of c. 1868_C语言中简单的链表实现 简单整理一下链表的实现&#xff0c;这一次结合前面看到的一些代码简单修改做一个小结。 主题由来介绍 以前工作之中链表的使用其实不多&#xff0c;主要是…

leetcode 每日一题 2024年01月07日 赎金信

题目 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; 输入…

NCC基础开发技能培训

YonBuilder for NCC 是一个带插件的eclipse工具&#xff0c;跟eclipse没什么区别 NC Cloud2021.11版本开发环境搭建改动 https://nccdev.yonyou.com/article/detail/495 不管是NC Cloud 新手还是老NC开发&#xff0c;在开发NC Cloud时开发环境搭建必看&#xff01;&#xff…

小猫踩球Scratch-第14届蓝桥杯Scratch省赛真题第2题

2. 小猫踩球&#xff08;40分&#xff09; 评判标准&#xff1a; 10分&#xff1a;满足"具体要求"中的1&#xff09;&#xff1b; 15分&#xff1a;满足"具体要求"中的2&#xff09;&#xff1b; 15分&#xff0c;满足"具体要求"中的3&#x…

设计模式之享元模式【结构型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

【金融数据分析】计算2023年沪深300成分股涨跌排行榜

前言 之前的文章中我们已经获取了沪深300成分股的详细个股数据&#xff0c;本文我们来计算一下2023年成分股的涨跌排行榜。 首先看一下效果 详细代码 首先说一下后端的代码&#xff0c;涨跌幅的计算公式如下&#xff1a; &#xff08;2023年最后一天的收盘价-2023年第一天的…

IMS基本架构

IP Multimedia Core Network Subsystem (IMS)商用已久&#xff0c;相对于CS domain的语音方案&#xff0c;IMS则是基于IETF定义的会话控制功能与多媒体传输功能通过IP-CAN实现的 全IP完整语音解决方案。 IMS能为无线和有线用户实现语音、视频、消息、数据等服务。便于运营商通过…

【C++】深入了解构造函数之初始化列表

目录 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 2&#xff09;不同成员变量赋值 2、初始化列表 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值…

【小沐学C++】C++ 实现鼠标键盘钩子HOOK

文章目录 1、简介2、相关函数2.1 SetWindowsHookEx2.2 UnhookWindowsHookEx2.3 CallNextHookEx 3、相关结构体3.1 KBDLLHOOKSTRUCT3.2 MSLLHOOKSTRUCT 4、挂钩过程5、代码测试5.1 代码1 结语 1、简介 https://learn.microsoft.com/zh-cn/windows/win32/winmsg/about-hooks 挂…

Kali Linux——获取root权限

目录 一、设置root密码 【操作命令】 【操作实例】 二、临时获取root权限 【操作命令】 【操作实例】 三、提升用户到root 1、获取root权限 2、进入/etc/passwd 3、查看root账号ID 4、找到需要修改的用户 5、输入i&#xff0c;进入编辑模式 6、把用户的ID改成跟r…

专为Mac用户设计的思维导图软件MindNode 2023 for Mac助您激发创意!

在现代快节奏的生活中&#xff0c;我们经常需要整理思绪、规划项目、记录灵感。而思维导图作为一种高效的思维工具&#xff0c;能够帮助我们更好地整理和展现思维。现在&#xff0c;我们介绍一款强大而直观的思维导图软件——MindNode 2023 for Mac&#xff0c;助您拓展思维边界…

SqueezeNet:通过紧凑架构彻底改变深度学习

一、介绍 在深度学习领域&#xff0c;对效率和性能的追求往往会带来创新的架构。SqueezeNet 是神经网络设计的一项突破&#xff0c;体现了这种追求。本文深入研究了 SqueezeNet 的复杂性&#xff0c;探讨其独特的架构、设计背后的基本原理、应用及其对深度学习领域的影响。 在创…

第九节HarmonyOS 常用基础组件11-TextPicker

1、描述 滑动选择文本内容的组件。 2、接口 TextPicker(options?: {range: string[]|Resource, selected?: number, value?: string}) 3、参数 参数名称 参数类型 必填 描述 range string[]|Resource 是 选择器的数据。 selected number 否 设置默认选中项在…