本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 控制台程序在控制台窗口可变参数格式化带颜色输出日志信息
原文链接:https://www.stubbornhuang.com/875/
发布于:2020年07月24日 11:29:43
修改于:2020年07月24日 11:29:43

1 C++以可变参数格式化带颜色输出日志信息
使用Unity时,它的日志系统做的就比较好,不同类型的日志信息在底下面板以不同的颜色输出出来,简单明了,所以仿照这个做了一个简陋的,不过也够用了,代码如下:
#include <iostream>
#include <Windows.h>
template <typename... Args>
void LogError(const char* fmt, Args... args) {
size_t strsize = snprintf(nullptr, 0, fmt, args...) + 1;
char* outstr = (char*)malloc(strsize);
snprintf(outstr, strsize, fmt, args...);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
std::cout << outstr << std::endl;
free(outstr);
}
template <typename... Args>
void LogWarning(const char* fmt, Args... args) {
size_t strsize = snprintf(nullptr, 0, fmt, args...) + 1;
char* outstr = (char*)malloc(strsize);
snprintf(outstr, strsize, fmt, args...);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
std::cout << outstr << std::endl;
free(outstr);
}
template <typename... Args>
void Log(const char* fmt, Args... args) {
size_t strsize = snprintf(nullptr, 0, fmt, args...) + 1;
char* outstr = (char*)malloc(strsize);
snprintf(outstr, strsize, fmt, args...);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
std::cout << outstr << std::endl;
free(outstr);
}
int main(int argn, char **argv)
{
LogError("%s", "LogError");
LogWarning("%s", "LogWarning");
Log("%s", "Log");
getchar();
return 0;
}
效果:
当前分类随机文章推荐
- C++ - 动态链接库dll为什么要使用unsigned char作为byte的内部格式 阅读99次,点赞0次
- C++11/std::thread - 线程管理join/detach 阅读1664次,点赞0次
- C++11 - 使用std::thread::join()/std::thread::detach()方法需要注意的点 阅读1644次,点赞0次
- C++ - 将一维数组/二维数组/三维数组作为函数参数传递给函数 阅读504次,点赞0次
- C++ - 使用模板和智能指针构建一个双向链表工具类 阅读70次,点赞0次
- C++ - 字节数组byte[]或者unsigned char[]与long的相互转换 阅读292次,点赞0次
- C++11 - std::bind简要介绍以及可绑定函数的几种形式总结 阅读3393次,点赞3次
- C++ - Windows和Linux系统下获取当前可执行程序的绝对路径 阅读303次,点赞0次
- C++11 - 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度 阅读722次,点赞0次
- C++ - 函数返回多个返回值的方法总结 阅读708次,点赞0次
全站随机文章推荐
- Mediapipe - 使用Mediapipe Holistic识别身体、手、面部全身关节点 阅读3127次,点赞2次
- TensorRT - 自带工具trtexec的参数使用说明 阅读2094次,点赞0次
- 书籍翻译 – Fundamentals of Computer Graphics, Fourth Edition,第4章 Ray Tracing中文翻译 阅读732次,点赞6次
- 资源分享 - Artificial Intelligence - A Modern Approach , First Edition 英文高清PDF下载 阅读786次,点赞0次
- C++ - 函数返回多个返回值的方法总结 阅读708次,点赞0次
- C++ - 使用ffmpeg读取视频旋转角度并使用OpenCV根据旋转角度对视频进行旋转复原 阅读685次,点赞0次
- 资源分享 - Computer Graphics from Scratch - A Programmer's Introduction to 3D Rendering 英文高清PDF下载 阅读1074次,点赞0次
- OpenCV - 静态图片人脸检测和摄像头人脸检测 阅读2461次,点赞0次
- WordPress - 通过Server酱发送微信通知给微信 阅读2456次,点赞0次
- C++ - Windows和Linux系统下获取当前可执行程序的绝对路径 阅读303次,点赞0次
评论
149