1. 程式人生 > 其它 >c++之終端輸出帶顏色

c++之終端輸出帶顏色

目錄

基礎用法

#include <iostream>

int main(int argc, char** argv)
{
  std::cout << "\033[0;30m This is black color text ! \033[0m" << std::endl;
  std::cout << "\033[0;31m This is red color text ! \033[0m" << std::endl;
  std::cout << "\033[0;32m This is green color text ! \033[0m" << std::endl;
  std::cout << "\033[0;33m This is orang color text ! \033[0m" << std::endl;
  std::cout << "\033[0;34m This is blue color text ! \033[0m" << std::endl;
  std::cout << "\033[0;35m This is purple color text ! \033[0m" << std::endl;
  std::cout << "\033[0;36m This is cyan color text ! \033[0m" << std::endl;
  std::cout << "\033[0;37m This is light gray color text ! \033[0m" << std::endl;

  return 0;
}

ANSI escape codes

顏色 code 顏色 code
black 0;30 dark gray 1;30
red 0;31 light red 1;31
green 0;32 light green 1;32
brown/orange 0;33 yellow 1;33
blue 0;34 light blue 1;34
purple 0;35 light purple 1;35
cyan 0;36 light cyan 1;36
light vray 0;37 whilte 1;37

注:

  • 錯誤 -- 紅色
  • 警告 -- 黃色
  • 資訊 -- 綠色

#define

  • 方法一:
#define COUT(X) std::cout <<std::setiosflags(std::ios::fixed)<< X << "\033[3m" << "\r" << std::flush << std::endl
#define COUTR(X) std::cout <<std::setiosflags(std::ios::fixed)<< "\033[1;31m " << X << "\033[0m" << "\r" << std::flush << std::endl  // red
#define COUTG(X) std::cout <<std::setiosflags(std::ios::fixed)<< "\033[1;32m " << X << "\033[0m" << "\r" << std::flush << std::endl  // green
#define COUTY(X) std::cout <<std::setiosflags(std::ios::fixed)<< "\033[1;33m " << X << "\033[0m" << "\r" << std::flush << std::endl  // yellow
#define COUTB(X) std::cout <<std::setiosflags(std::ios::fixed)<< "\033[1;34m " << X << "\033[0m" << "\r" << std::flush << std::endl  // blue
#define COUTP(X) std::cout <<std::setiosflags(std::ios::fixed)<< "\033[1;35m " << X << "\033[0m" << "\r" << std::flush << std::endl  // purple

用法:

COUTG("~~ ================================================ ~~");
COUTG("~~ =====         Robosense Perception         ===== ~~");
COUTG("~~ ================================================ ~~");
COUTG("OpenCV version: " << CV_VERSION);
COUTG("ROS version: " << ROS_VERSION_MAJOR << "." << ROS_VERSION_MINOR << "." << ROS_VERSION_PATCH);
COUTG("PCL version: " << PCL_VERSION_PRETTY);
COUTG("Boost version: " << BOOST_LIB_VERSION);
COUTG("Eigen version: " << EIGEN_WORLD_VERSION << "." << EIGEN_MAJOR_VERSION << "." << EIGEN_MINOR_VERSION);
  • 方法二:
#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 PURPLE "\033[35m" /* Purple */
#define CYAN "\033[36m"   /* Cyan */
#define WHITE "\033[37m"  /* White */

#define NORMAL (std::cout << RESET)
#define INFO (std::cout << GREEN)
#define WARN (std::cout << YELLOW)
#define ERROR (std::cout << RED)
#define DEBUG (std::cout << CYAN)
#define END (std::endl)
#define REND "\033[0m" << std::endl

個人感覺第二種方法用起來更方便些.