funclib.hpp 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #ifndef FUNCLIB_HPP
  2. #define FUNCLIB_HPP
  3. #ifdef _WIN32
  4. #ifdef FUNC_LIBRARY_EXPORTS
  5. #define FUNC_LIBRARY_API __declspec(dllexport)
  6. #else
  7. #define FUNC_LIBRARY_API __declspec(dllimport)
  8. #ifdef _DEBUG
  9. #pragma comment (lib, "funclibd.lib")
  10. #else
  11. #pragma comment (lib, "funclib.lib")
  12. #endif
  13. #endif
  14. #else
  15. #define FUNC_LIBRARY_API
  16. #endif
  17. #include <map>
  18. #include <cmath>
  19. #include <vector>
  20. #include <string>
  21. namespace rettype
  22. {
  23. enum type :std::int32_t
  24. {
  25. ini = 0,
  26. absent,
  27. exist,
  28. except
  29. };
  30. }
  31. struct mulparam
  32. {
  33. std::string strname = "";
  34. std::string strvalue = "";
  35. };
  36. namespace funclib {
  37. //字符串转数字, 失败返回0
  38. template<class T>
  39. FUNC_LIBRARY_API T strtonum(std::string strtemp);
  40. //字符串转数字, 失败返回1
  41. template<class T>
  42. FUNC_LIBRARY_API T strtonumzero(std::string strtemp);
  43. //字符串转数字, 失败返回1
  44. template<class T>
  45. FUNC_LIBRARY_API inline T strtonumone(std::string strtemp);
  46. //获取unix时间戳
  47. FUNC_LIBRARY_API std::int64_t gettimestamp();
  48. //获取本地时间戳
  49. FUNC_LIBRARY_API std::int64_t getlocaltimestamp();
  50. //unix时间戳转本地时间戳
  51. FUNC_LIBRARY_API std::int64_t getunixtolocalstamp(std::int64_t itime);
  52. //本地时间戳转unix时间戳
  53. FUNC_LIBRARY_API std::int64_t getlocaltounixstamp(std::int64_t& itime);
  54. //unix时间戳获取本地从1970_01_05开始到现在的天数
  55. FUNC_LIBRARY_API std::int32_t getlocalday(std::int64_t& itime);
  56. //unix时间戳获取本地从1970_01_05开始到现在的周数
  57. FUNC_LIBRARY_API std::int32_t getlocalweekday(std::int64_t& itime);
  58. //获取本地时间当月的天数
  59. FUNC_LIBRARY_API std::int32_t getcurmonthday(std::int64_t itime);
  60. //得到本地时间戳字符串
  61. FUNC_LIBRARY_API std::string getlocalstampstring();
  62. //从unix时间戳得到本地时间戳字符串,精确到秒
  63. FUNC_LIBRARY_API std::string getsectimefromunixstamp(std::int64_t itimestamp);
  64. //从unix时间戳获取本地时间字符串
  65. FUNC_LIBRARY_API std::string gettimefromstamp(std::int64_t itimestamp);
  66. //整型缩小10000倍保留两位小数,最后两位舍去
  67. FUNC_LIBRARY_API std::string getdouble(std::int64_t itemp);
  68. //base64位编码
  69. FUNC_LIBRARY_API bool Base64Encode(const std::string& input, std::string& output);
  70. //base64位编码
  71. FUNC_LIBRARY_API bool Base64Decode(const std::string& input, std::string& output);
  72. //转出json字符串
  73. template <class T>
  74. FUNC_LIBRARY_API std::string doctojson(T& doc);
  75. //转出json字符串保留4为小数
  76. template <class T>
  77. FUNC_LIBRARY_API std::string doctojsonfd(T& doc);
  78. //错误码转出json {erro:1}
  79. FUNC_LIBRARY_API std::string errotojson(std::int32_t ierro);
  80. //错误码转出json {ret:1, info:"ok"}
  81. FUNC_LIBRARY_API std::string rettojson(std::int32_t iret, std::string strinfo);
  82. //根据key从map中获取数值类型
  83. template<typename T>
  84. FUNC_LIBRARY_API rettype::type funnum(std::map<std::string, std::string>& getdata, T& iretdata, std::string strkey);
  85. //整型转36进制字符串
  86. FUNC_LIBRARY_API std::string decimalToBase36(std::int64_t num);
  87. //36进制字符串转整型
  88. FUNC_LIBRARY_API std::int64_t base36ToDecimal(const std::string& str);
  89. //判断字符串是否是json
  90. FUNC_LIBRARY_API bool isValidJson(const std::string& jsonString);
  91. //tmulparam参数转post请求参数
  92. FUNC_LIBRARY_API std::string geturl_mulparam(std::string& strpath, std::string& strhost, std::vector<mulparam>& tmulparam);
  93. template<typename F>
  94. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::string& tvalue);
  95. template<typename F>
  96. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::uint32_t& tvalue);
  97. template<typename F>
  98. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::int32_t& tvalue);
  99. template<typename F>
  100. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::uint64_t& tvalue);
  101. template<typename F>
  102. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::int64_t& tvalue);
  103. template<typename F>
  104. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, std::double_t& tvalue);
  105. template<typename F>
  106. inline FUNC_LIBRARY_API rettype::type getjsonvalue(const F& doc, std::string strdata, bool& tvalue);
  107. template<typename F>
  108. inline FUNC_LIBRARY_API rettype::type getjsonscore(const F& doc, std::string strdata, std::int64_t& tvalue);
  109. template<typename F>
  110. inline FUNC_LIBRARY_API rettype::type getjsonscore(const F& doc, std::string strjson, std::string strfindvalue, std::int64_t& iscore);
  111. // AES加密字符串函数
  112. FUNC_LIBRARY_API std::string AESEncryptString(const char* instr);
  113. // AES解密字符串函数
  114. FUNC_LIBRARY_API std::string AESDecryptString(const char* instr);
  115. //获取从bsoncxx::document::elemen中mongoid
  116. template<typename T>
  117. FUNC_LIBRARY_API std::string getmongoid(T& id_ele);
  118. //str转wstr输出为utf16
  119. FUNC_LIBRARY_API std::wstring strtowstr(const std::string& str);
  120. //wstr转str输出为utf8
  121. FUNC_LIBRARY_API std::string wstrtostr(const std::wstring& wstr);
  122. //json加密
  123. FUNC_LIBRARY_API std::string funjsonencode(std::string strdata);
  124. //把wchar_t转成std::string,返回长度不能超过ilen
  125. FUNC_LIBRARY_API std::string getwchartostr(wchar_t* tcTemp, int ilen);
  126. //获取程序唯一标识符
  127. FUNC_LIBRARY_API inline std::uint32_t getcurid();
  128. //获取唯一标识符
  129. FUNC_LIBRARY_API inline std::string getonlytoken(std::int32_t tindex, std::uint32_t icurid);
  130. //gb2312转utf8
  131. FUNC_LIBRARY_API std::string getutf8(std::string strdata);
  132. //url解码
  133. FUNC_LIBRARY_API inline std::string urlDecode(const std::string& encodedText);
  134. //chunkd encode
  135. FUNC_LIBRARY_API inline bool zibcompress(const std::string& datain, std::string& dataout, int level);
  136. //chunkd decode
  137. FUNC_LIBRARY_API inline bool zibuncompress(const std::string& datain, std::string& dataout);
  138. //判断chunkd
  139. FUNC_LIBRARY_API inline void dechunk(const char* chunked_data, std::string& dechunked_data);
  140. //网站字符转义
  141. FUNC_LIBRARY_API inline void htmlescape(std::string& input);
  142. FUNC_LIBRARY_API inline void* getmsgqueue();
  143. FUNC_LIBRARY_API inline void delmsgqueue(void* pdata);
  144. FUNC_LIBRARY_API inline void msgqueuesend(void* pmsg, std::string& url, void* pdata, std::int32_t ilen);
  145. template<class T>
  146. FUNC_LIBRARY_API inline void msgqueuerecv(void* pmsg, T& tfun);
  147. FUNC_LIBRARY_API inline std::string getmyip();
  148. FUNC_LIBRARY_API inline std::string getdatainfo();
  149. }
  150. #endif