用C++写了个Convert类,仅供新手学习

来源:互联网 发布:正版蓝博软件 编辑:程序博客网 时间:2024/06/08 12:27

Convert.h

class Convert{public:Convert(){}~Convert(){};//是否小写static bool islower(int c);//是否大写static bool isupper(int c);//转换成小写static int tolower(int c);//转换成大写static int toupper(int c);//是否是十进制static bool isdecimal(int c);//是否是二进制static bool isbinary(int c);//是否是八进制static bool isoctal(int c);//是否是十六进制static bool ishex(int c);//计算字符串长度static int strlen(const char *str);//查找指定字符static char *strchr(char *str, int c);//查找指定字符,忽略大小写static char *strchri(char *str, int c);//查找指定字符串static char *strstr(char *str, const char *substr);//查找指定字符串,忽略大小写static char *strstri(char *str, const char *substr);//复制字符串到缓存区中static char *strcpy(char *str1, const char *str2);//复制指定大小的字符串到缓冲区中static char *strcpyn(char *str1, const char *str2, int num);//连接字符串static char *strcat(char *str1, const char *str2);//比较字符串static int strcmp(char *str1, char *str2);//比较字符串,比较指定字节static int strncmp(char *str1, char *str2, int num);//比较字符串,忽略大小写static int strcmpi(char *str1, char *str2);//比较字符串,比较指定字节,忽略大小写static int strncmpi(char *str1, char *str2, int num);//32位整形转化成字符串static int itoa(int num, char *str);//32位无符号整形转化成字符串static int uitoa(unsigned int num, char *str);//字符串转化成32位整形static int atoi(char *str);//64位整形转化成字符串static int i64toa(__int64 num, char *str);//64位无符号整形转化成字符串static int ui64toa(unsigned __int64 num, char *str);//字符串转化成64位整形static __int64 atoi64(char *str);//多字节转化成宽字符字符串static int mbstowcs(char* ansi, wchar_t * uni, int num);//宽字符转化成多字节字符串static int wcstombs(wchar_t *uni, char* ansi, int num);};

 


Convert.cpp

bool Convert::islower(int c){if(c >= 'a' && c <= 'z')return true;return false;}bool Convert::isupper(int c){if(c >= 'A' && c <= 'Z')return true;return false;}int Convert::tolower(int c){if(isupper(c)){return c + 32;}return c;}int Convert::toupper(int c){if(islower(c)){return c - 32;}return c;}bool Convert::isdecimal(int c){if((c >= '0') && (c <= '9'))return true;return false;}bool Convert::isbinary(int c){if((c >= '0') && (c <= '1'))return true;return false;}bool Convert::isoctal(int c){if((c >= '0') && (c <= '7'))return true;return false;}bool Convert::ishex(int c){if((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'))return true;return false;}int Convert::strlen(const char *str){inti;if(!str)return 0;for(i = 0; str[i]; i++);return i;}char *Convert::strchr(char *str, int c){inti;for(i=0; str[i]; i++){if(str[i] == c) return &str[i];}return NULL;}char *Convert::strchri(char *str, int c){inti;for(i=0; str[i]; i++){if(tolower(str[i]) == tolower(c)) return &str[i];}return NULL;}char *Convert::strstr(char *str, const char *substr){inti;intj;intk;if(!str || !substr)return NULL;if(!substr[0])return str;for(i=0; str[i]; i++){if(str[i] == substr[0]){for(k=i+1, j=1; str[k] && substr[j] && str[k] == substr[j]; k++, j++);if(!substr[j]) return &str[i];if(!str[k]) return NULL;}}return NULL;}char *Convert::strstri(char *str, const char *substr){inti;intj;intk;if(!str || !substr)return NULL;if(!substr[0])return str;for(i=0; str[i]; i++){if(tolower(str[i]) == tolower(substr[0])){for(k=i+1, j=1; str[k] && substr[j] && tolower(str[k]) == tolower(substr[j]); k++, j++);if(!substr[j]) return &str[i];if(!str[k]) return NULL;}}return NULL;}char *Convert::strcpy(char *str1, const char *str2){inti;if(!str1 || !str2)return NULL;for(i = 0; str2[i]; i++){str1[i] = str2[i];}str1[i] = str2[i];return str1;}char *Convert::strcpyn(char *str1, const char *str2, int num){inti;if(!str1 || !str2)return NULL;for(i = 0; i < num - 1 && str2[i]; i++){str1[i] = str2[i];}str1[i] = '\0';return str1;}char *Convert::strcat(char *str1, const char *str2){inti;intj;if(!str1 || !str2)return NULL;for(i = 0; str1[i]; i++);for(j = 0; str2[j]; i++, j++){str1[i] = str2[j];}str1[i] = str2[j];return str1;}int Convert::strcmp(char *str1, char *str2){inti;if(!str1 || !str2)return 0;for(i = 0; (str1[i] == str2[i]) && str1[i] && str2[i]; i++);if(str1[i] == str2[i])return 0;return (str1[i] > str2[i]) ? 1 : -1;}int Convert::strncmp(char *str1, char *str2, int num){inti;if(!str1 || !str2 || !num)return 0;for(i = 0; (i < num - 1) && (str1[i] == str2[i]) && str1[i] && str2[i]; i++);if(str1[i] == str2[i])return 0;return (str1[i] > str2[i]) ? 1 : -1;}int Convert::strcmpi(char *str1, char *str2){inti;if(!str1 || !str2)return 0;for(i = 0; (tolower(str1[i]) == tolower(str2[i])) && str1[i] && str2[i]; i++);if(tolower(str1[i]) == tolower(str2[i]))return 0;return (tolower(str1[i]) > tolower(str2[i])) ? 1 : -1;}int Convert::strncmpi(char *str1, char *str2, int num){inti;if(!str1 || !str2 || !num)return 0;for(i = 0; (tolower(str1[i]) == tolower(str2[i])) && (i < num - 1) && str1[i] && str2[i]; i++);if(tolower(str1[i]) == tolower(str2[i]))return 0;return (tolower(str1[i]) > tolower(str2[i])) ? 1 : -1;}int Convert::itoa(int num, char *str){chartmp[15];intmod;intquotient;inti = 0;intj = 0;if(num == 0){str[0] = '\0';return 0;}else if(num < 0){num = 0 - num;tmp[i++] = '\0';str[j++] = '-';}else{tmp[i++] = '\0';}quotient = num;for(; quotient; i++){mod = quotient % 10;quotient = quotient / 10;tmp[i] = (unsigned char)(mod + 48);}for(; i--; j++){str[j] = tmp[i];}return j;}int Convert::uitoa(unsigned int num, char *str){chartmp[15];intmod;unsigned intquotient;inti = 0;intj = 0;if(num == 0){str[0] = '\0';return 0;}tmp[i++] = '\0';quotient = num;for(; quotient; i++){mod = quotient % 10;quotient = quotient / 10;tmp[i] = (unsigned char)(mod + 48);}for(; i--; j++){str[j] = tmp[i];}return j; }int Convert::atoi(char *str){intnum = 0;intbit = 1;boolbSign = false;inti;intj;if(str == NULL)return 0;if(str[0] == '-' || str[0] == '+'){bSign = true;}for(i = bSign; str[i]; i++){if(str[i] < 48 || str[i] > 57)break;}for(j = 0; j < i - 1 - bSign; j++){bit *= 10;}for(i = bSign; str[i]; i++){num = num + bit * (str[i] - 48);bit /= 10;}if(str[0] == '-'){num = 0 - num;}return num;}int Convert::i64toa(__int64 num, char *str){chartmp[35];intmod;__int64quotient;inti = 0;intj = 0;if(str == NULL)return 0;if(num == 0){str[0] = '\0';return 0;}else if(num < 0){num = 0 - num;tmp[i++] = '\0';str[j++] = '-';}else{tmp[i++] = '\0';}quotient = num;for(; quotient; i++){mod = quotient % 10;quotient = quotient / 10;tmp[i] = (unsigned char)(mod + 48);}for(; i--; j++){str[j] = tmp[i];}return j;}int Convert::ui64toa(unsigned __int64 num, char *str){chartmp[35];intmod;unsigned __int64quotient;inti = 0;intj = 0;if(str == NULL)return 0;if(num == 0){str[0] = '\0';return 0;}else if(num < 0){num = 0 - num;tmp[i++] = '\0';str[j++] = '-';}else{tmp[i++] = '\0';}quotient = num;for(; quotient; i++){mod = quotient % 10;quotient = quotient / 10;tmp[i] = (unsigned char)(mod + 48);}for(; i--; j++){str[j] = tmp[i];}return j;}__int64 Convert::atoi64(char *str){__int64num = 0;__int64bit = 1;boolbSign = false;inti;intj;if(str == NULL)return 0;if(str[0] == '-' || str[0] == '+'){bSign = true;}for(i = bSign; str[i]; i++){if(str[i] < 48 || str[i] > 57)break;}for(j = 0; j < i - 1 - bSign; j++){bit *= 10;}for(i = bSign; str[i]; i++){num = num + bit * (str[i] - 48);bit /= 10;}if(str[0] == '-'){num = 0 - num;}return num;}int Convert::mbstowcs(char* ansi, wchar_t * uni, int num){wchar_t*buf;intlen;len = MultiByteToWideChar(CP_ACP, 0, ansi, -1, 0, 0);buf = (wchar_t*)LocalAlloc(LMEM_FIXED, len * sizeof(wchar_t));MultiByteToWideChar(CP_ACP, 0, ansi, -1, buf, len);if(num >= len)::lstrcpynW(uni, buf, len);else::lstrcpynW(uni, buf, num);LocalFree(buf);return len;}int Convert::wcstombs(wchar_t *uni, char* ansi, int num){char*buf;intlen;len = WideCharToMultiByte(CP_OEMCP, 0, uni, -1, 0, 0, 0, 0);buf = (char*)LocalAlloc(LPTR, len * sizeof(char));WideCharToMultiByte(CP_OEMCP, 0, uni, -1, buf, len, 0, 0);if(num >= len)::lstrcpynA(ansi, buf, len);else::lstrcpynA(ansi, buf, num);LocalFree(buf);return len;}


 

原创粉丝点击