zoukankan      html  css  js  c++  java
  • C++更改控制台输出颜色

    View Code
    #include "stdafx.h"
    #include <iostream>
    #include <windows.h>
    
    
    #ifndef _CONSOLECOLOR_H_
    #define _CONSOLECOLOR_H_
    
    std::ostream& blue(std::ostream &s);
    std::ostream& red(std::ostream &s);
    std::ostream& green(std::ostream &s);
    std::ostream& yellow(std::ostream &s);
    std::ostream& white(std::ostream &s);
    struct color {
        color(WORD attribute):m_color(attribute){};
        WORD m_color;
    };
    template <class _Elem, class _Traits>
    std::basic_ostream<_Elem,_Traits>& 
          operator<<(std::basic_ostream<_Elem,_Traits>& i, color& c);
          
    #include "ConsoleColor.cpp"
    #endif

    ConsoleColor.h

    ConsoleColor.cpp(该文件一定不要加入工程,放入当前目录即可)

    View Code
    #include "stdafx.h"
    #include "ConsoleColor.h"
    inline std::ostream& blue(std::ostream &s)
    {
        HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hStdout, FOREGROUND_BLUE
                  |FOREGROUND_GREEN|FOREGROUND_INTENSITY);
        return s;
    }
    
    inline std::ostream& red(std::ostream &s)
    {
        HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hStdout, 
                    FOREGROUND_RED|FOREGROUND_INTENSITY);
        return s;
    }
    
    inline std::ostream& green(std::ostream &s)
    {
        HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hStdout, 
                  FOREGROUND_GREEN|FOREGROUND_INTENSITY);
        return s;
    }
    
    inline std::ostream& yellow(std::ostream &s)
    {
        HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hStdout, 
             FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
        return s;
    }
    
    inline std::ostream& white(std::ostream &s)
    {
        HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hStdout, 
           FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
        return s;
    }
    
    template <class _Elem, class _Traits>
    std::basic_ostream<_Elem,_Traits>& 
          operator<<(std::basic_ostream<_Elem,_Traits>& i, color& c)
    {
        HANDLE hStdout=GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hStdout,c.m_color);
        return i;
    }

    main.cpp

    View Code
    #include "stdafx.h"
    #include "ConsoleColor.h"
    //#include "ConsoleColor.cpp"
    void main()
    {
        std::cout << green << "This text is written in green" 
              << white << std::endl;
        std::cout << color(FOREGROUND_RED|FOREGROUND_GREEN) 
              << "This text has a really exiting color !" 
              << white << std::endl;
    }


    关于怎么样使用头文件定义一个模板类参考以下链接:

    http://www.codeproject.com/Articles/48575/How-to-define-a-template-class-in-a-h-file-and-imp

  • 相关阅读:
    Android源码学习之如何使用eclipse+NDK
    Android NDK 工具链的使用方法(Standalone Toolchain)
    gcc和g++的区别
    OCP-1Z0-051-V9.02-42题
    OCP-1Z0-051-V9.02-41题
    OCP-1Z0-051-V9.02-40题
    OCP-1Z0-051-V9.02-39题
    windows下自动生成文件夹下所有JNI所需的.h头文件
    OCP-1Z0-051-V9.02-38题
    Oracle DB 视图
  • 原文地址:https://www.cnblogs.com/salomon/p/2511727.html
Copyright © 2011-2022 走看看