静态库封装之ComStr类

打印 上一主题 下一主题

主题 1008|帖子 1008|积分 3024

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
ComStr.h
  1. #pragma once
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. class ComStr
  6. {
  7. public:
  8.         //CString
  9.         //=============================================================================================================
  10.         /*
  11.         func:CString 转换为 string
  12.         cs:待转换的CString
  13.         ret:转换后的string
  14.         */
  15.         static string CStringToString(CString cs);
  16.         /*
  17.         func:CString 转换为 char[]
  18.         cs:待转换的CString
  19.         ptrch:转换后的char[]
  20.         */
  21.         static bool CStringTopchar(CString cs, char* ptrch);
  22.         /*
  23.         func:CString 转换为 PCHAR
  24.         cs:待转换的CString
  25.         pch:转换后的PCHAR
  26.         */
  27.         static bool CStringToPCHAR(CString cs, PCHAR pch);
  28.         /*
  29.         func:string 转换为 CString
  30.         str:待转换的string
  31.         ret:转换后的CString
  32.         */
  33.         static CString stringToCString(string str);
  34.         /*
  35.         func:char[] 转换为 CString
  36.         ptrch:待转换的char[]
  37.         ret:转换后的CString
  38.         */
  39.         static CString pcharToCString(const char* ptrch);
  40.         /*
  41.         func:PCHAR 转换为 CString
  42.         pch:待转换的PCHAR
  43.         ret:转换后的CString
  44.         */
  45.         static CString PCHARToCString(PCHAR pch);
  46.         //string
  47.         //=============================================================================================================
  48.         /*
  49.         func:字符串分割
  50.         str:待分割的字符串
  51.         ch:分割字符
  52.         ret:分割完成的字符串容器
  53.         */
  54.         static vector<string> stringSplit(string str, char ch);
  55.         /*
  56.         func:字符串替换指定字符串
  57.         str:待替换的的字符串
  58.         strOld:需要被替换的字符串
  59.         strNew:指定的字符串
  60.         ret:替换完成的字符串
  61.         */
  62.         static string stringReplace(string str, string strOld, string strNew);
  63.         //string to num [unsigned]
  64.         //=============================================================================================================
  65.         /*
  66.         func:按照指定基数将字符串转换为unsigned char型整数[不检查合法性,默认为字符串合法]
  67.         str:待转换的字符串
  68.         iBase:基数
  69.         ret:转换后的数字
  70.         */
  71.         static unsigned char stringToUChar(string str, int iBase);
  72.         /*
  73.         func:按照十进制将字符串转换为unsigned char型整数[不检查合法性,默认为字符串合法]
  74.         str:待转换的字符串
  75.         ret:转换后的数字
  76.         */
  77.         static unsigned char stringToUCharDec(string str);
  78.         /*
  79.         func:按照十六进制将字符串转换为unsigned char型整数[不检查合法性,默认为字符串合法]
  80.         str:待转换的字符串
  81.         ret:转换后的数字
  82.         */
  83.         static unsigned char stringToUCharHex(string str);
  84.         /*
  85.         func:按照指定基数将字符串转换为unsigned short型整数[不检查合法性,默认为字符串合法]
  86.         str:待转换的字符串
  87.         iBase:基数
  88.         ret:转换后的数字
  89.         */
  90.         static unsigned short stringToUShort(string str, int iBase);
  91.         /*
  92.         func:按照十进制将字符串转换为unsigned short型整数[不检查合法性,默认为字符串合法]
  93.         str:待转换的字符串
  94.         ret:转换后的数字
  95.         */
  96.         static unsigned short stringToUShortDec(string str);
  97.         /*
  98.         func:按照十六进制将字符串转换为unsigned short型整数[不检查合法性,默认为字符串合法]
  99.         str:待转换的字符串
  100.         ret:转换后的数字
  101.         */
  102.         static unsigned short stringToUShortHex(string str);
  103.         /*
  104.         func:按照指定基数将字符串转换为unsigned int型整数[不检查合法性,默认为字符串合法]
  105.         str:待转换的字符串
  106.         iBase:基数
  107.         ret:转换后的数字
  108.         */
  109.         static unsigned int stringToUInt(string str, int iBase);
  110.         /*
  111.         func:按照十进制将字符串转换为unsigned int型整数[不检查合法性,默认为字符串合法]
  112.         str:待转换的字符串
  113.         ret:转换后的数字
  114.         */
  115.         static unsigned int stringToUIntDec(string str);
  116.         /*
  117.         func:按照十六进制将字符串转换为unsigned int型整数[不检查合法性,默认为字符串合法]
  118.         str:待转换的字符串
  119.         ret:转换后的数字
  120.         */
  121.         static unsigned int stringToUIntHex(string str);
  122.         /*
  123.         func:按照指定基数将字符串转换为unsigned long型整数[不检查合法性,默认为字符串合法]
  124.         str:待转换的字符串
  125.         iBase:基数
  126.         ret:转换后的数字
  127.         */
  128.         static unsigned long stringToULong(string str, int iBase);
  129.         /*
  130.         func:按照十进制将字符串转换为unsigned long型整数[不检查合法性,默认为字符串合法]
  131.         str:待转换的字符串
  132.         ret:转换后的数字
  133.         */
  134.         static unsigned long stringToULongDec(string str);
  135.         /*
  136.         func:按照十六进制将字符串转换为unsigned long型整数[不检查合法性,默认为字符串合法]
  137.         str:待转换的字符串
  138.         ret:转换后的数字
  139.         */
  140.         static unsigned long stringToULongHex(string str);
  141.         /*
  142.         func:按照指定基数将字符串转换为unsigned long long型整数[不检查合法性,默认为字符串合法]
  143.         str:待转换的字符串
  144.         iBase:基数
  145.         ret:转换后的数字
  146.         */
  147.         static unsigned long long stringToULongLong(string str, int iBase);
  148.         /*
  149.         func:按照十进制将字符串转换为unsigned long long型整数[不检查合法性,默认为字符串合法]
  150.         str:待转换的字符串
  151.         ret:转换后的数字
  152.         */
  153.         static unsigned long long stringToULongLongDec(string str);
  154.         /*
  155.         func:按照十六进制将字符串转换为unsigned long long型整数[不检查合法性,默认为字符串合法]
  156.         str:待转换的字符串
  157.         ret:转换后的数字
  158.         */
  159.         static unsigned long long stringToULongLongHex(string str);
  160.         //string to num [signed]
  161.         //=============================================================================================================
  162.         /*
  163.         func:按照指定基数将字符串转换为char型整数[不检查合法性,默认为字符串合法]
  164.         str:待转换的字符串
  165.         iBase:基数
  166.         ret:转换后的数字
  167.         */
  168.         static char stringToChar(string str, int iBase);
  169.         /*
  170.         func:按照十进制将字符串转换为char型整数[不检查合法性,默认为字符串合法]
  171.         str:待转换的字符串
  172.         ret:转换后的数字
  173.         */
  174.         static char stringToCharDec(string str);
  175.         /*
  176.         func:按照十六进制将字符串转换为char型整数[不检查合法性,默认为字符串合法]
  177.         str:待转换的字符串
  178.         ret:转换后的数字
  179.         */
  180.         static char stringToCharHex(string str);
  181.         /*
  182.         func:按照指定基数将字符串转换为short型整数[不检查合法性,默认为字符串合法]
  183.         str:待转换的字符串
  184.         iBase:基数
  185.         ret:转换后的数字
  186.         */
  187.         static short stringToShort(string str, int iBase);
  188.         /*
  189.         func:按照十进制将字符串转换为short型整数[不检查合法性,默认为字符串合法]
  190.         str:待转换的字符串
  191.         ret:转换后的数字
  192.         */
  193.         static short stringToShortDec(string str);
  194.         /*
  195.         func:按照十六进制将字符串转换为short型整数[不检查合法性,默认为字符串合法]
  196.         str:待转换的字符串
  197.         ret:转换后的数字
  198.         */
  199.         static short stringToShortHex(string str);
  200.         /*
  201.         func:按照指定基数将字符串转换为int型整数[不检查合法性,默认为字符串合法]
  202.         str:待转换的字符串
  203.         iBase:基数
  204.         ret:转换后的数字
  205.         */
  206.         static int stringToInt(string str, int iBase);
  207.         /*
  208.         func:按照十进制将字符串转换为int型整数[不检查合法性,默认为字符串合法]
  209.         str:待转换的字符串
  210.         ret:转换后的数字
  211.         */
  212.         static int stringToIntDec(string str);
  213.         /*
  214.         func:按照十六进制将字符串转换为int型整数[不检查合法性,默认为字符串合法]
  215.         str:待转换的字符串
  216.         ret:转换后的数字
  217.         */
  218.         static int stringToIntHex(string str);
  219.         /*
  220.         func:按照指定基数将字符串转换为long型整数[不检查合法性,默认为字符串合法]
  221.         str:待转换的字符串
  222.         iBase:基数
  223.         ret:转换后的数字
  224.         */
  225.         static long stringToLong(string str, int iBase);
  226.         /*
  227.         func:按照十进制将字符串转换为long型整数[不检查合法性,默认为字符串合法]
  228.         str:待转换的字符串
  229.         ret:转换后的数字
  230.         */
  231.         static long stringToLongDec(string str);
  232.         /*
  233.         func:按照十六进制将字符串转换为long型整数[不检查合法性,默认为字符串合法]
  234.         str:待转换的字符串
  235.         ret:转换后的数字
  236.         */
  237.         static long stringToLongHex(string str);
  238.         /*
  239.         func:按照指定基数将字符串转换为long long型整数[不检查合法性,默认为字符串合法]
  240.         str:待转换的字符串
  241.         iBase:基数
  242.         ret:转换后的数字
  243.         */
  244.         static long long stringToLongLong(string str, int iBase);
  245.         /*
  246.         func:按照十进制将字符串转换为long long型整数[不检查合法性,默认为字符串合法]
  247.         str:待转换的字符串
  248.         ret:转换后的数字
  249.         */
  250.         static long long stringToLongLongDec(string str);
  251.         /*
  252.         func:按照十六进制将字符串转换为long long型整数[不检查合法性,默认为字符串合法]
  253.         str:待转换的字符串
  254.         ret:转换后的数字
  255.         */
  256.         static long long stringToLongLongHex(string str);
  257. };
复制代码
ComStr.cpp
  1. #include "ComStr.h"
  2. string ComStr::CStringToString(CString cs)
  3. {
  4.         int len = cs.GetLength();
  5.         PCHAR pch = new char[len + 1];
  6.         size_t pchSize = wcstombs(pch, cs, len + 1);
  7.         if (pchSize == wstring::npos)
  8.         {
  9.                 delete pch;
  10.                 return "";
  11.         }
  12.         string str(pch);
  13.         delete pch;
  14.         return str;
  15. }
  16. bool ComStr::CStringTopchar(CString cs, char * ptrch)
  17. {
  18.         int len = cs.GetLength();
  19.         PCHAR pch = new char[len + 1];
  20.         size_t pchSize = wcstombs(pch, cs, len + 1);
  21.         if (pchSize == wstring::npos)
  22.         {
  23.                 delete pch;
  24.                 return false;
  25.         }
  26.         string str(pch);
  27.         delete pch;
  28.         memccpy(ptrch, str.c_str(), sizeof(char), str.size());
  29.         ptrch[str.size()] = 0;
  30.         return true;
  31. }
  32. bool ComStr::CStringToPCHAR(CString cs, PCHAR pch)
  33. {
  34.         int len = cs.GetLength();
  35.         PCHAR pch_ = new char[len + 1];
  36.         size_t pchSize = wcstombs(pch_, cs, len + 1);
  37.         if (pchSize == wstring::npos)
  38.         {
  39.                 delete pch_;
  40.                 return false;
  41.         }
  42.         string str(pch_);
  43.         delete pch_;
  44.         memccpy(pch, str.c_str(), sizeof(char), str.size());
  45.         pch[str.size()] = 0;
  46.         return true;
  47. }
  48. CString ComStr::stringToCString(string str)
  49. {
  50.         return CString(str.c_str());
  51. }
  52. CString ComStr::pcharToCString(const char* pch)
  53. {
  54.         return CString(pch);
  55. }
  56. CString ComStr::PCHARToCString(PCHAR pch)
  57. {
  58.         return CString(pch);
  59. }
  60. vector<string> ComStr::stringSplit(string str, char ch)
  61. {
  62.         vector<string> StrVec;
  63.         while (true)
  64.         {
  65.                 int iPos = str.find_first_of(ch);
  66.                 if (str.npos == iPos)
  67.                 {
  68.                         StrVec.push_back(str);
  69.                         break;
  70.                 }
  71.                 StrVec.push_back(str.substr(0, iPos));
  72.                 str = str.substr(iPos + 1);
  73.         }
  74.         return StrVec;
  75. }
  76. string ComStr::stringReplace(string str, string strOld, string strNew)
  77. {
  78.         size_t iPos = str.find(strOld, 0);
  79.         while (str.npos != iPos)
  80.         {
  81.                 str.replace(iPos, strOld.length(), strNew);
  82.                 iPos += strNew.length();
  83.                 iPos = str.find(strOld, iPos);
  84.         }
  85.         return str;
  86. }
  87. unsigned char ComStr::stringToUChar(string str, int iBase)
  88. {
  89.         unsigned long ulRet = stoul(str, 0, iBase);
  90.         unsigned char ucRet = ulRet;
  91.         return ucRet;
  92. }
  93. unsigned char ComStr::stringToUCharDec(string str)
  94. {
  95.         unsigned long ulRet = stoul(str, 0, 10);
  96.         unsigned char ucRet = ulRet;
  97.         return ucRet;
  98. }
  99. unsigned char ComStr::stringToUCharHex(string str)
  100. {
  101.         unsigned long ulRet = stoul(str, 0, 16);
  102.         unsigned char ucRet = ulRet;
  103.         return ucRet;
  104. }
  105. unsigned short ComStr::stringToUShort(string str, int iBase)
  106. {
  107.         unsigned long ulRet = stoul(str, 0, iBase);
  108.         unsigned short usRet = ulRet;
  109.         return usRet;
  110. }
  111. unsigned short ComStr::stringToUShortDec(string str)
  112. {
  113.         unsigned long ulRet = stoul(str, 0, 10);
  114.         unsigned short usRet = ulRet;
  115.         return usRet;
  116. }
  117. unsigned short ComStr::stringToUShortHex(string str)
  118. {
  119.         unsigned long ulRet = stoul(str, 0, 16);
  120.         unsigned short usRet = ulRet;
  121.         return usRet;
  122. }
  123. unsigned int ComStr::stringToUInt(string str, int iBase)
  124. {
  125.         unsigned long ulRet = stoul(str, 0, iBase);
  126.         unsigned int uiRet = ulRet;
  127.         return uiRet;
  128. }
  129. unsigned int ComStr::stringToUIntDec(string str)
  130. {
  131.         unsigned long ulRet = stoul(str, 0, 10);
  132.         unsigned int uiRet = ulRet;
  133.         return uiRet;
  134. }
  135. unsigned int ComStr::stringToUIntHex(string str)
  136. {
  137.         unsigned long ulRet = stoul(str, 0, 16);
  138.         unsigned int uiRet = ulRet;
  139.         return uiRet;
  140. }
  141. unsigned long ComStr::stringToULong(string str, int iBase)
  142. {
  143.         return stoul(str, 0, iBase);
  144. }
  145. unsigned long ComStr::stringToULongDec(string str)
  146. {
  147.         return stoul(str, 0, 10);
  148. }
  149. unsigned long ComStr::stringToULongHex(string str)
  150. {
  151.         return stoul(str, 0, 16);
  152. }
  153. unsigned long long ComStr::stringToULongLong(string str, int iBase)
  154. {
  155.         return stoull(str, 0, iBase);
  156. }
  157. unsigned long long ComStr::stringToULongLongDec(string str)
  158. {
  159.         return stoull(str, 0, 10);
  160. }
  161. unsigned long long ComStr::stringToULongLongHex(string str)
  162. {
  163.         return stoull(str, 0, 16);
  164. }
  165. char ComStr::stringToChar(string str, int iBase)
  166. {
  167.         long lRet = stol(str, 0, iBase);
  168.         char cRet = lRet;
  169.         return cRet;
  170. }
  171. char ComStr::stringToCharDec(string str)
  172. {
  173.         long lRet = stol(str, 0, 10);
  174.         char cRet = lRet;
  175.         return cRet;
  176. }
  177. char ComStr::stringToCharHex(string str)
  178. {
  179.         long lRet = stol(str, 0, 16);
  180.         char cRet = lRet;
  181.         return cRet;
  182. }
  183. short ComStr::stringToShort(string str, int iBase)
  184. {
  185.         long lRet = stol(str, 0, iBase);
  186.         short sRet = lRet;
  187.         return sRet;
  188. }
  189. short ComStr::stringToShortDec(string str)
  190. {
  191.         long lRet = stol(str, 0, 10);
  192.         short sRet = lRet;
  193.         return sRet;
  194. }
  195. short ComStr::stringToShortHex(string str)
  196. {
  197.         long lRet = stol(str, 0, 16);
  198.         short sRet = lRet;
  199.         return sRet;
  200. }
  201. int ComStr::stringToInt(string str, int iBase)
  202. {
  203.         long lRet = stol(str, 0, iBase);
  204.         int iRet = lRet;
  205.         return iRet;
  206. }
  207. int ComStr::stringToIntDec(string str)
  208. {
  209.         long lRet = stol(str, 0, 10);
  210.         int iRet = lRet;
  211.         return iRet;
  212. }
  213. int ComStr::stringToIntHex(string str)
  214. {
  215.         long lRet = stol(str, 0, 16);
  216.         int iRet = lRet;
  217.         return iRet;
  218. }
  219. long ComStr::stringToLong(string str, int iBase)
  220. {
  221.         return stol(str, 0, iBase);
  222. }
  223. long ComStr::stringToLongDec(string str)
  224. {
  225.         return stol(str, 0, 10);
  226. }
  227. long ComStr::stringToLongHex(string str)
  228. {
  229.         return stol(str, 0, 16);
  230. }
  231. long long ComStr::stringToLongLong(string str, int iBase)
  232. {
  233.         return stoll(str, 0, iBase);
  234. }
  235. long long ComStr::stringToLongLongDec(string str)
  236. {
  237.         return stoll(str, 0, 10);
  238. }
  239. long long ComStr::stringToLongLongHex(string str)
  240. {
  241.         return stoll(str, 0, 16);
  242. }
复制代码
在VS编译器内会报C4996错误,解决见下文:
C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 博客园 (cnblogs.com)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表