前段时间,看到终端里面彩色文字觉得好看,突然就好奇的搜索了一下。我已经记不起那个人的博客了这里就不加连接了。今天准备删掉一些测试代码,看到这个想着还是记录下来,省的下次找了,虽然很好找。
先看下之前某位大佬写的吧:
#define RESET "\033[0m" #define BLACK "\033[30m" /* Black */ #define RED "\033[31m" /* Red */ #define GREEN "\033[32m" /* Green */ #define YELLOW "\033[33m" /* Yellow */ #define BLUE "\033[34m" /* Blue */ #define MAGENTA "\033[35m" /* Magenta */ #define CYAN "\033[36m" /* Cyan */ #define WHITE "\033[37m" /* White */ #define BOLDBLACK "\033[1m\033[30m" /* Bold Black */ #define BOLDRED "\033[1m\033[31m" /* Bold Red */ #define BOLDGREEN "\033[1m\033[32m" /* Bold Green */ #define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */ #define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */ #define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */ #define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */ #define BOLDWHITE "\033[1m\033[37m" /* Bold White */ std::cout << BOLDYELLOW << "BOLDYELLOW" << std::endl; std::cout << YELLOW << "YELLOW" << std::endl;因为cpp 不建议使用宏来预定义,建议使用const来定义常量。这个区别表现在编译器对宏展开和const处理上。这里就不展开了,自己查吧。我记不清了,就记住尽可能使用const代替宏来定义常量。下面是我自己使用const定义的,再加上Google Coding Style。最后多一嘴像这种没什么大用处的代码自己写到一个头文件中放放到自己的写代码库中就可以了,想用时候include一下就好了,这种代码基本不会被修改。
#ifndef COMMON_TERMINAL_TEXT_COLOR_H_ #define COMMON_TERMINAL_TEXT_COLOR_H_ #include<string> namespace terminal { const std::string kReset = "\033[0m"; const std::string kBlack = "\033[30m"; const std::string kRed = "\033[31m"; const std::string kGreen = "\033[32m"; const std::string kYellow = "\033[33m"; const std::string kBlue = "\033[34m"; const std::string kMagenta = "\033[35m"; const std::string kCyan = "\033[36m"; const std::string kWhite = "\033[37m"; } // !namespace terminal #endif // !COMMON_TERMINAL_TEXT_COLOR_H_调用其实和上面一样,因为string支持流提取运算符。值得注意的是我自己又加了一个命名空间,因为颜色的单词太常见了,可能有人会定义一个char* kWhite =0xffffff,这样就容易重名。当使用std::cout<<kWhite<<std::endl;时就会不符合自己本意的问题,如果使用stringstream甚至导致出错。