C++控制台程序通用头文件汇总

最近把c++重学了一遍,

然后发现每次我在开发项目的时候每次调用api和头都要一个一个的include,

这就导致我很烦(其实就是懒)

所以我就在空闲时间写了一个头:

名字是head.h(正经名我也懒得取, 对了还有define我没写, 自己加要不然会多次重复编译)

tips:这个版本只适用于mingw, vc版本可以自己试着改(比如把bits/stdc++.h删了看哪里报错填上头就行了) , 这个头目前来说更倾向于控制台小游戏的开发, 不过能用就行

下面是代码:

#include<ctime>
#include<cstdio>
#include<conio.h>
#include<iostream>
#include<algorithm>
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;

#define ll long long

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")



void SetConsoleWindowSize(SHORT, SHORT);
void color(int );
void clear(SHORT ,SHORT );
void print_waits(string, int);
void SetBackgroundColor(unsigned int, unsigned int);
void print_wait(string , int, bool);
void goto_x_y(ll, ll);
void SetColor(int);
void key_down();
void SetOutputColorAndBackgroundColor(int , int);
void HideCursor();

void SetConsoleWindowSize( SHORT width, SHORT height )
{
    HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    SMALL_RECT wrt = { 0, 0, (SHORT)(width-1), (SHORT)(height-1)};
    SetConsoleWindowInfo( hStdOutput, TRUE, &wrt ); // 设置窗体尺寸
    COORD coord = { width, height };
    SetConsoleScreenBufferSize( hStdOutput, coord ); // 设置缓冲尺寸
}


void print_wait(string str, int waitTime, bool end = true){
    if(end)
        cout << str << endl;
    else
        cout << str;

    Sleep(waitTime);


}
void goto_x_y(ll h, ll l)//移动光标
{
    COORD pos = { (SHORT)(l - 1),(SHORT)(h - 1) };
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hOut, pos);

}

void SetBackgroundColor(unsigned int ForeColor=7,unsigned int BackGroundColor=0) //颜色函数
{
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(handle,ForeColor+BackGroundColor*0x10);
}

void clear(SHORT x, SHORT y)//覆盖清屏
{
    COORD pos = {x,y};
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hOut, pos);

}

void print_waits(string s,int x)
{
    int Len = s.length();
    for(int i=0;i<Len;i++)
    {
        cout<<s[i];
        Sleep(x);
    }
    cout<<"\n";
}

void SetColor(int a)
{
/*亮白*/              if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*蓝色*/              if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*绿色*/              if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
/*紫色*/              if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
/*红色*/              if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
/*黄色*/              if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
/*深蓝色*/            if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
/*土黄色or金黄色*/    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
/*灰色接近白*/        if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}

void key_down()//
{
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)

    //使用方法如:if(KEY_DOWN(VK_LBUTTON)) //如果鼠标左键按下
    /*
    常量名				   对应按键
    ————————————————————————
    VK_LBUTTON             鼠标左键
    VK_RBUTTON             鼠标右键
    VK_CANCEL              Ctrl+Break
    VK_MBUTTON             鼠标中键
    VK_BACK                Backspace键
    VK_TAB                 Tab 键
    VK_RETURN              回车键
    VK_SHIFT               Shift键
    VK_CONTROL             Ctrl键
    VK_MENU                Alt键
    VK_PAUSE               Pause键
    VK_CAPITAL             Caps Lock键
    VK_ESCAPE              Esc键
    VK_SPACE               空格键
    VK_PRIOR               Page Up键
    VK_NEXT                Page Down键
    VK_END                 End键
    VK_HOME                Home键
    VK_LEFT                左箭头键
    VK_UP                  上箭头键
    VK_RIGHT               右箭头键
    VK_DOWN                下箭头键
    VK_SNAPSHOT            Print Screen键
    VK_Insert              Insert键
    VK_Delete              Delete键
    '0' – '9'             数字0-9
    'A' – 'Z'             字母A - Z
    VK_LWIN                左WinKey(104键盘才有)
    VK_RWIN                右WinKey(104键盘才有)
    VK_APPS                AppsKey(104键盘才有)
    VK_NUMPAD0             小键盘0键
    VK_NUMPAD1             小键盘1键
    VK_NUMPAD2             小键盘2键
    VK_NUMPAD3             小键盘3键
    VK_NUMPAD4             小键盘4键
    VK_NUMPAD5             小键盘5键
    VK_NUMPAD6             小键盘6键
    VK_NUMPAD7             小键盘7键
    VK_NUMPAD8             小键盘8键
    VK_NUMPAD9             小键盘9键
    VK_F1 - VK_F24         功能键F1–F24
    VK_NUMLOCK             Num Lock键
    VK_SCROLL              Scroll Lock键
    */
}

void SetOutputColorAndBackgroundColor(int ForgC, int BackC)//SetColorAndBackground函数(颜色函数)
{
    WORD wColor=((BackC & 0x0F)<<4)+(ForgC & 0x0F);
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);

}

void HideCursor()//隐藏光标
{
    CONSOLE_CURSOR_INFO cur={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cur);
}




啧啧啧, 里面包含了一些比较常用的函数, 部分是网上查的, 侵权删.

参考:youxi.h

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值