#ifndef hxkfahxk_H
#define hxkfahxk_H

#include<io.h>
#include<windows.h>
#include<direct.h>                                                                
#include <fstream>
#include<functional>
#include<regex>
#include<time.h>
#include<string>                                                   
#include<algorithm>
#include<vector>
#include<iostream>
#include <sstream>
#include<tchar.h>
#include <SHLWAPI.h>
#pragma comment(lib,"SHLWAPI.lib")
using namespace std;
template <typename Ret, typename... Args>
Ret DllCall(HMODULE hModule,const char* name, Args&& ...args){
auto proc= GetProcAddress(hModule, name);
typedef Ret(__stdcall* Func)(Args...);
return (proc) ? reinterpret_cast<Func>(proc)(std::forward<Args>(args)...) : (Ret());
}
#ifdef _DEBUG



    
template <class T1> ostream& operator<<(ostream &out,std::initializer_list<T1> &src){
        auto p=src.begin();
        cout<<"{ ";
        if (p==src.end()) {cout<<" }";return out;}
        if ( p!=src.end()) cout<<(*p);
        ++p;
        for (;p!=src.end();++p)cout<<","<<(*p);
        cout<<" }";
        return out;}

    
template <class T1> ostream& operator<<(ostream &out,std::vector<T1> &src){
        auto p=src.begin();
        cout<<"{ ";
        if (p==src.end()) {cout<<" }";return out;}
        if (typeid(T1)==typeid(unsigned char)){
        if (p!=src.end())cout<<(int)*((unsigned char *)&*p);                                                                                    
        ++p;
        for (;p!=src.end();++p)cout<<","<<(int)*((unsigned char *)&*p);
        }else{
        if (p!=src.end()) cout<<(*p);
        ++p;
        for (;p!=src.end();++p)cout<<","<<(*p);
        }
        cout<<" }";
        return out;}

    #endif
    
template <class T1> T1 生成类型默认参数(T1 *传入模板变量){
          T1 新变量;
        return 新变量;}








#include <comutil.h>
#pragma comment(lib, "comsupp.lib")





















extern  int mhnd_user32;
extern  double Pi;
bool 文件属性是目录(_tfinddata_t 文件信息);
int 取文件尺寸(FILE * 文件句柄);
size_t 取文件尺寸(std::string 文件名);
std::string 取当前目录(void);
void 处理事件(void);
std::string 字符串UNICODE转ANSI文本(wchar_t* pwszSrc);
int 十六到十(std::string 参_十六进制文本);
template <class T1> double 到数值(T1 参_待转数据);
std::string 取运行目录(void);
std::string 取执行文件名(void);
std::string 读配置项(const char * 参_配置文件,const char * 参_字段名称,const char * 参_键名称,const char * 参_值默认);
std::string 剪辑板取文本(void);
bool 剪辑板置文本(std::string 参_内容);
std::vector<unsigned char> operator+(std::initializer_list<int> &t,std::vector<unsigned char> &t2);
std::vector<unsigned char> operator+(std::vector<unsigned char> &t,std::vector<unsigned char> &t2);
std::vector<unsigned char> operator+(std::vector<unsigned char> &t,std::initializer_list<int> &t2);
std::string 字节集到文本(std::vector<unsigned char> value);
std::vector<unsigned char> 合并字节集(std::vector<unsigned char> t,std::vector<unsigned char> t2);
std::vector<unsigned char> 合并字节集(std::vector<unsigned char> t,std::initializer_list<int> t2);
std::vector<unsigned char> 合并字节集(std::initializer_list<int> t2,std::vector<unsigned char> t);
std::vector<unsigned char> 取空白字节集(int 数量);
std::vector<unsigned char> 字节集替换(std::vector<unsigned char> 参_字节集,int 参_起始位,int 参_长度,std::vector<unsigned char> 参_替换集);
int 取字节集长度(std::vector<unsigned char> vec);
std::vector<unsigned char> 取字节集左边(std::vector<unsigned char> vec,int len);
std::vector<unsigned char> 取字节集右边(std::vector<unsigned char> vec,int len);
std::vector<unsigned char> 取字节集中间(std::vector<unsigned char> vec,int pos,int len);
std::vector<unsigned char> 到字节集(std::string 文本);
std::vector<unsigned char> 到字节集(char * 参_字串);
std::vector<unsigned char> 到字节集(int 参_整型值);
std::vector<unsigned char> 到字节集(float 参_小数值);
std::vector<unsigned char> 到字节集(double 参_双精数);
std::string 到文本(char 变量[]);
std::string 到文本(std::vector<unsigned char> 变量);
std::string 到文本(unsigned char 变量);
std::string 到文本(char 变量);
std::string 到文本(short 变量);
std::string 到文本(int 变量);
std::string 到文本(long long 变量);
std::string 到文本(float 变量);
std::string 到文本(double 变量);
std::string 取文本右边(std::string 原文本,int 右边取出长度);
std::string 取指定文本(std::string 原文本,std::string 特征左文本,std::string 特征右文本);
std::string 取指定文本(std::string 原文本,std::string 特征左文本,std::string 特征右文本,int &位置);
std::vector<std::string> 取指定文本组(std::string 原文本,std::string 特征左文本,std::string 特征右文本);
std::vector<int> 取子文本位置组(std::string 参_文本,std::string 参_子文本);
std::string 子文本替换(std::string 原文本,std::string 子文本,std::string 替换值);
std::string 取文本对中间左起(std::string 原文本,std::string 左符号,std::string 右符号,int 左起始=0);
std::vector<std::string> 分割文本(std::string 参_传入文本,std::string 参_分割符,int 参_数量=0);
std::string 合并数组文本(std::vector<std::string> 参文本数组,std::string 参分隔符="");
std::string 取首拼(std::string 参_中英文);
int 取字符串长度(char * A);
void 流程之循环示例(void);
void 流程之分支示例(void);
void 流程之嵌入汇编示例(void);
void 文本操作示例(void);
void 内存管理示例(void);
void 文件读写示例(void);
void 目录操作示例(void);
void 数组示例(void);
bool 方法1(char 参_3772812,char 参_3773359);

#endif