Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: CheckSum RN41 RealTimeClock TVZ_MU_Seminar ... more
StrLib.cpp
00001 #include "StrLib.h" 00002 00003 long long A2I(string str, unsigned int base) // Error; rtn '-1' 00004 { 00005 long long ans= 0; // 64bit 00006 int tmp= 0; // 32bit 00007 int leng= str.size(); // String Length; 00008 unsigned int chr; 00009 for(int i= 0; i < leng; i++) { 00010 chr= str[leng-1-i]; 00011 if('0'<=chr && '9'>=chr) 00012 tmp= chr-'0'; 00013 else if('A'<=chr && 'F'>=chr) 00014 tmp= chr-'A'+0x0A; // ex. C=12= 2(C-A)+ 10(0x0A) 00015 else if('a'<=chr && 'f'>=chr) 00016 tmp= chr-'a'+0x0A; 00017 else 00018 return -1; 00019 00020 ans+= (long long)((double)tmp* pow((double)base,(double)i)); 00021 } 00022 return ans; 00023 } 00024 string I2A(int num, unsigned int base, unsigned int digitNum) 00025 { 00026 char tmpChr[33]; 00027 // "%5.5dなどとしたい 00028 string format= "%"; 00029 00030 // Digit Num. 00031 if(digitNum > 0) { // 0以外 00032 unsigned int tmp; 00033 tmp= '0'+ digitNum; 00034 format += tmp; 00035 format += "."; 00036 format += tmp; // +でつなげると、charの和(オーバーフロー)起こす。 00037 } 00038 00039 if( base == 8) 00040 format += "o"; 00041 else if(base == 10) 00042 format += "d"; 00043 else if(base == 16) 00044 format += "x"; 00045 else 00046 return "ERR; base: Oct, Dec, Hex."; 00047 00048 sprintf(tmpChr, format.c_str(), num); 00049 string tmpStr= tmpChr; 00050 return tmpStr; 00051 } 00052 string I2A(long long num, unsigned int base, unsigned int digitNum) 00053 { 00054 char tmpChr[33]; 00055 // "%5.5dなどとしたい 00056 string format= "%"; 00057 00058 // Digit Num. 00059 if(digitNum > 0) { // 0以外 00060 unsigned int tmp; 00061 tmp= '0'+ digitNum; 00062 format += tmp; 00063 format += "."; 00064 format += tmp; // +でつなげると、charの和(オーバーフロー)起こす。 00065 } 00066 00067 if( base == 8) 00068 format += "llo"; 00069 else if(base == 10) 00070 format += "lld"; 00071 else if(base == 16) 00072 format += "llx"; 00073 else 00074 return "ERR; base: Oct, Dec, Hex."; 00075 00076 sprintf(tmpChr, format.c_str(), num); 00077 string tmpStr= tmpChr; 00078 return tmpStr; 00079 } 00080 00081 string F2A(float num, int fieldWidth, int decimalPlaces, bool fill0) 00082 { 00083 if(!(0<=fieldWidth && fieldWidth<30)) 00084 return "ERR; fieldWidth."; 00085 if(!(0<=decimalPlaces && decimalPlaces<30) ) 00086 return "ERR; decimalPlaces."; 00087 if(fieldWidth < decimalPlaces+2) 00088 return "ERR; fieldWidth < decimalPlaces+2"; 00089 00090 char tmpChr[33]; 00091 string format= "%"; 00092 if(fill0) 00093 format += "0"; 00094 format += I2A(fieldWidth)+ "."+ I2A(decimalPlaces)+ "f"; 00095 sprintf(tmpChr, format.c_str(), num); 00096 string tmpStr= tmpChr; 00097 return tmpStr; 00098 } 00099 string F2A(float num) 00100 { 00101 char tmpChr[33]; 00102 sprintf(tmpChr, "%f", num); 00103 string tmpStr= tmpChr; 00104 return tmpStr; 00105 } 00106 00107 bool strCompare(string trg, string cmp, int idx) 00108 { 00109 int id= trg.find(cmp, idx); 00110 if(id == string::npos) 00111 return false; 00112 return id == idx; 00113 } 00114 bool strCompareComplete(string trg, string cmp) 00115 { 00116 int idx= trg.find(cmp); 00117 if(idx == string::npos) 00118 return false; 00119 idx= cmp.find(trg); 00120 if(idx == string::npos) 00121 return false; 00122 00123 return true; 00124 } 00125 00126 string toAlpanumeric(string str, bool toLarge) 00127 { 00128 string ans= ""; 00129 bool num, small, large; 00130 for (int i= 0; i < str.size(); i++) { 00131 num= small= large= false; 00132 if('0' <= str[i] && str[i] <= '9') 00133 num= true; 00134 else if('A' <= str[i] && str[i] <= 'Z') 00135 large= true; 00136 else if('a' <= str[i] && str[i] <= 'z') 00137 small= true; 00138 00139 if(toLarge && small) 00140 str[i] -= 0x20; // small -> large 00141 if(num || large || small) 00142 ans += str[i]; 00143 } 00144 00145 return ans; 00146 }
Generated on Sun Jul 17 2022 01:52:10 by
1.7.2