Shell颜色封装(C++)

#include <string>

#include <stdarg.h>

#include <sstream>

#include <iostream>

 

typedef enum ShellColor

{

    //使用时先输出 "\033[" ,然后输出下面的枚举值,多个枚举值用分号隔开,最后输 出"m" 即可 

    SC_DEFAULT = 0,             //重新设置属性到缺省设置

    FONT_B = 1,                 //粗体

    FONT_HALF_LIGHT = 2,            //一半亮度

    FONT_U = 4,                 //下划线

    FONT_FLICKER = 5,               //闪烁

    SC_REVERSE = 7,             //将背景与字体颜色相换

    FONT_BLACK = 30,            //黑色字体

    FONT_RED = 31,          //红色字体

    FONT_GREEN = 32,            //绿色字体

    FONT_BROWN = 33,            //棕色字体

    FONT_BLUE = 34,         //蓝色字体

    FONT_PURPLE = 35,       //紫色字体

    FONT_BLUEST = 36,       //青色字体

    FONT_WHITE = 37,            //白色字体

    BG_BLACK = 40,          //黑色背景

    BG_RED = 41,                //红色背景

    BG_GREEN = 42,          //绿色背景

    BG_BROWN = 44,          //棕色背景

    BG_BLUE = 44,           //蓝色背景

    BG_PURPLE = 45,         //紫色背景

    BG_BLUEST = 46,         //青色背景

    BG_WHITE = 47,          //白色背景

} SHELL_COLOR;

 

//下面的方法使用可变参数

std::string set_shell_color(int first,...)  

{

    va_list  lt; 

    va_start(lt,first);

    const int flag = static_cast<int>(-1);

    std::string ret;

    std::stringstream ss; 

    ss<<"\033["<<first;

    int i;

    while((i = va_arg(lt,int)) != flag)

    {   

        ss<<";"<<i;

    }   

    va_end(lt);

    ss<<"m";

    ss>>ret;

    return ret;

}

 

//下面的方法使用 c++0X 特性。

std::string set_shell_color_new(std::initializer_list<int> list)

{

    std::string ret;

    std::stringstream ss; 

    ss<<"\033[";

    for(int i : list)

    {

        ss<<";"<<i;

    }

    ss<<"m";

    ss>>ret;

    return ret;

}

 

///*

int main()

{

    std::cout<<set_shell_color(FONT_BLUEST,FONT_U,-1)<<"set_shell_color"<<std::endl;

    std::cout<<set_shell_color_new({FONT_PURPLE,FONT_B})<<"set_shell_color_new"<<set_shell_color_new({0})<<std::endl;

}

//*/

 

你可能感兴趣的:(shell)