#ifndef FUNCLIB_HPP #define FUNCLIB_HPP #ifdef _WIN32 #ifdef FUNC_LIBRARY_EXPORTS #define FUNC_LIBRARY_API __declspec(dllexport) #else #define FUNC_LIBRARY_API __declspec(dllimport) #ifdef _DEBUG #pragma comment (lib, "funclibd.lib") #else #pragma comment (lib, "funclib.lib") #endif #endif #else #define FUNC_LIBRARY_API #endif #include #include #include #include namespace rettype { enum type :std::int32_t { ini = 0, absent, exist, except }; } struct mulparam { std::string strname = ""; std::string strvalue = ""; }; namespace funclib { //字符串转数字, 失败返回0 template FUNC_LIBRARY_API T strtonum(std::string strtemp); //字符串转数字, 失败返回1 template FUNC_LIBRARY_API T strtonumzero(std::string strtemp); //字符串转数字, 失败返回1 template FUNC_LIBRARY_API inline T strtonumone(std::string strtemp); //获取unix时间戳 FUNC_LIBRARY_API std::int64_t gettimestamp(); //获取本地时间戳 FUNC_LIBRARY_API std::int64_t getlocaltimestamp(); //unix时间戳转本地时间戳 FUNC_LIBRARY_API std::int64_t getunixtolocalstamp(std::int64_t itime); //本地时间戳转unix时间戳 FUNC_LIBRARY_API std::int64_t getlocaltounixstamp(std::int64_t& itime); //unix时间戳获取本地从1970_01_05开始到现在的天数 FUNC_LIBRARY_API std::int32_t getlocalday(std::int64_t& itime); //unix时间戳获取本地从1970_01_05开始到现在的周数 FUNC_LIBRARY_API std::int32_t getlocalweekday(std::int64_t& itime); //获取本地时间当月的天数 FUNC_LIBRARY_API std::int32_t getcurmonthday(std::int64_t itime); //得到本地时间戳字符串 FUNC_LIBRARY_API std::string getlocalstampstring(); //从unix时间戳得到本地时间戳字符串,精确到秒 FUNC_LIBRARY_API std::string getsectimefromunixstamp(std::int64_t itimestamp); //从unix时间戳获取本地时间字符串 FUNC_LIBRARY_API std::string gettimefromstamp(std::int64_t itimestamp); //整型缩小10000倍保留两位小数,最后两位舍去 FUNC_LIBRARY_API std::string getdouble(std::int64_t itemp); //base64位编码 FUNC_LIBRARY_API bool Base64Encode(const std::string& input, std::string& output); //base64位编码 FUNC_LIBRARY_API bool Base64Decode(const std::string& input, std::string& output); //转出json字符串 template FUNC_LIBRARY_API std::string doctojson(T& doc); //转出json字符串保留4为小数 template FUNC_LIBRARY_API std::string doctojsonfd(T& doc); //错误码转出json {erro:1} FUNC_LIBRARY_API std::string errotojson(std::int32_t ierro); //错误码转出json {ret:1, info:"ok"} FUNC_LIBRARY_API std::string rettojson(std::int32_t iret, std::string strinfo); //根据key从map中获取数值类型 template FUNC_LIBRARY_API rettype::type funnum(std::map& getdata, T& iretdata, std::string strkey); //整型转36进制字符串 FUNC_LIBRARY_API std::string decimalToBase36(std::int64_t num); //36进制字符串转整型 FUNC_LIBRARY_API std::int64_t base36ToDecimal(const std::string& str); //判断字符串是否是json FUNC_LIBRARY_API bool isValidJson(const std::string& jsonString); //tmulparam参数转post请求参数 FUNC_LIBRARY_API std::string geturl_mulparam(std::string& strpath, std::string& strhost, std::vector& tmulparam); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::string& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::uint32_t& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::int32_t& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::uint64_t& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::int64_t& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::double_t& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, bool& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonscore(const F& doc, std::string strdata, std::int64_t& tvalue); template inline FUNC_LIBRARY_API rettype::type getjsonscore(const F& doc, std::string strjson, std::string strfindvalue, std::int64_t& iscore); // AES加密字符串函数 FUNC_LIBRARY_API std::string AESEncryptString(const char* instr); // AES解密字符串函数 FUNC_LIBRARY_API std::string AESDecryptString(const char* instr); //获取从bsoncxx::document::elemen中mongoid template FUNC_LIBRARY_API std::string getmongoid(T& id_ele); //str转wstr输出为utf16 FUNC_LIBRARY_API std::wstring strtowstr(const std::string& str); //wstr转str输出为utf8 FUNC_LIBRARY_API std::string wstrtostr(const std::wstring& wstr); //json加密 FUNC_LIBRARY_API std::string funjsonencode(std::string strdata); //把wchar_t转成std::string,返回长度不能超过ilen FUNC_LIBRARY_API std::string getwchartostr(wchar_t* tcTemp, int ilen); //获取程序唯一标识符 FUNC_LIBRARY_API inline std::uint32_t getcurid(); //获取唯一标识符 FUNC_LIBRARY_API inline std::string getonlytoken(std::int32_t tindex, std::uint32_t icurid); //gb2312转utf8 FUNC_LIBRARY_API std::string getutf8(std::string strdata); //url解码 FUNC_LIBRARY_API inline std::string urlDecode(const std::string& encodedText); //chunkd encode FUNC_LIBRARY_API inline bool zibcompress(const std::string& datain, std::string& dataout, int level); //chunkd decode FUNC_LIBRARY_API inline bool zibuncompress(const std::string& datain, std::string& dataout); //判断chunkd FUNC_LIBRARY_API inline void dechunk(const char* chunked_data, std::string& dechunked_data); //网站字符转义 FUNC_LIBRARY_API inline void htmlescape(std::string& input); FUNC_LIBRARY_API inline void* getmsgqueue(); FUNC_LIBRARY_API inline void delmsgqueue(void* pdata); FUNC_LIBRARY_API inline void msgqueuesend(void* pmsg, std::string& url, void* pdata, std::int32_t ilen); template FUNC_LIBRARY_API inline void msgqueuerecv(void* pmsg, T& tfun); FUNC_LIBRARY_API inline std::string getmyip(); FUNC_LIBRARY_API inline std::string getdatainfo(); } #endif