#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 <process.h>
#include <SHLWAPI.h>
#pragma comment(lib,"SHLWAPI.lib")
#include <comutil.h>
#pragma comment(lib, "comsupp.lib")
using namespace std;
template<typename out_type, typename in_value>
out_type & converttype(const in_value & t,out_type & result){
stringstream stream;
stream<<t;                
stream>>result;                
return  result;
}
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();
        out<<"{ ";
        if (p==src.end()) {out<<" }";return out;}
        if ( p!=src.end()) out<<(*p);
        ++p;
        for (;p!=src.end();++p)out<<","<<(*p);
        out<<" }";
        return out;}

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

    #endif
    
template <class T1> T1  生成类型默认参数(T1 *传入模板变量){
          T1 新变量;
        return 新变量;
    
}
template <class T1> std::vector<T1>  operator+(std::vector<T1> &参_数组1,std::vector<T1> &参_数组2){
        参_数组1.insert(参_数组1.end(),参_数组2.begin(),参_数组2.end());
        return 参_数组1;}








#include <codecvt>
#include <locale>


























extern  int mhnd_user32;
class {
};
extern const  double Pi;
bool  文件属性是目录(_tfinddata_t 文件信息);
int  取文件尺寸(int 文件句柄);
size_t  取文件尺寸(std::string 文件名);
std::string  取当前目录(void);
void __stdcall   处理事件(void);
void  延迟(int 参_延时时间);
std::wstring  ANSI字符串转UNICODE文本(char * 参_字符串);
std::string  字符串UNICODE转ANSI文本(wchar_t* pwszSrc);
char *  Unicode2U8(const wchar_t* 参_U文本);
std::string  Ansi2U8(const std::string &参_strGb2312);
std::string  U82Ansi(const std::string &参_strUtf8);
int  十六到十(std::string 参_十六进制文本);
std::string  十到十六(long long 参_长整);
template <class T1> double  到数值(T1 参_待转数据);
std::string  数组合并(std::vector<std::string> 参_文本组,std::string 参_分隔符="");
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::wstring  删首尾空(std::wstring 参_文本);
std::wstring  删首空(std::wstring 参_文本);
std::wstring  删尾空(std::wstring 参_文本);
std::wstring  取文本右边(std::wstring 原文本,int 右边取出长度);
std::wstring  取指定文本(std::wstring 原文本,std::wstring 特征左文本,std::wstring 特征右文本);
std::wstring  取指定文本(std::wstring 原文本,std::wstring 特征左文本,std::wstring 特征右文本,int &位置);
std::vector<std::wstring>  取指定文本组(std::wstring 原文本,std::wstring 特征左文本,std::wstring 特征右文本);
std::vector<int>  取子文本位置组(std::wstring 参_文本,std::wstring 参_子文本);
std::wstring  子文本替换(std::wstring 原文本,std::wstring 子文本,std::wstring 替换值,int 替换次数=-1);
std::wstring  取文本对中间左起(std::wstring 原文本,std::wstring 左符号,std::wstring 右符号,int 左起始=0);
std::vector<std::wstring>  分割文本(std::wstring 参_传入文本,std::wstring 参_分割符,int 参_数量=0);
std::wstring  合并数组文本(std::vector<std::wstring> 参文本数组,std::wstring 参分隔符=L"");
int __stdcall   创建临界区(void);
std::string  删首尾空(std::string 参_文本);
std::string  删首空(std::string 参_文本);
std::string  删尾空(std::string 参_文本);
std::string  取空白文本(int 参_长度);
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 替换值,int 替换次数=-1);
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);
void  方法3000(void * 参_18201421);
bool  方法10000(char 参_3772812,char 参_3773359);
UINT32 __stdcall   线程方法1(void * 参_5854828);
UINT32 __stdcall   线程方法2(void * 参_5854828);

#endif