00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "StringManipulation.h"
00014 #include "math.h"
00015
00016 using namespace std;
00017
00018
00019 string StringManipulation::toAllUpper(string & s)
00020 {
00021 int size = (int)s.size();
00022 string result;
00023
00024 for(int i=0; i<size; i++)
00025 {
00026 char upper = StringManipulation::toUpperChar(s[i]);
00027 result += upper;
00028 }
00029
00030 return result;
00031 }
00032
00033
00034 string StringManipulation::toAllLower(string & s)
00035 {
00036 int size = (int)s.size();
00037 string result;
00038
00039 for(int i=0; i<size; i++)
00040 {
00041 char lower = StringManipulation::toLowerChar(s[i]);
00042 result += lower;
00043 }
00044
00045 return result;
00046 }
00047
00048
00049
00050 string StringManipulation::toFirstUpperRestLower(string & s)
00051 {
00052 int size = (int)s.size();
00053 string result;
00054
00055 if( size < 1 )
00056 {
00057 return result;
00058 }
00059
00060 char upper = StringManipulation::toUpperChar(s[0]);
00061 result += upper;
00062
00063 for(int i=1; i<size; i++)
00064 {
00065 char lower = StringManipulation::toLowerChar(s[i]);
00066 result += lower;
00067 }
00068
00069 return result;
00070 }
00071
00072
00073 char StringManipulation::toUpperChar(char c)
00074 {
00075 switch( c )
00076 {
00077 case 'a': return 'A';
00078 case 'b': return 'B';
00079 case 'c': return 'C';
00080 case 'd': return 'D';
00081 case 'e': return 'E';
00082 case 'f': return 'F';
00083 case 'g': return 'G';
00084 case 'h': return 'H';
00085 case 'i': return 'I';
00086 case 'j': return 'J';
00087 case 'k': return 'K';
00088 case 'l': return 'L';
00089 case 'm': return 'M';
00090 case 'n': return 'N';
00091 case 'o': return 'O';
00092 case 'p': return 'P';
00093 case 'q': return 'Q';
00094 case 'r': return 'R';
00095 case 's': return 'S';
00096 case 't': return 'T';
00097 case 'u': return 'U';
00098 case 'v': return 'V';
00099 case 'w': return 'W';
00100 case 'x': return 'X';
00101 case 'y': return 'Y';
00102 case 'z': return 'Z';
00103 default: return c;
00104 }
00105 }
00106
00107
00108 char StringManipulation::toLowerChar(char c)
00109 {
00110 switch( c )
00111 {
00112 case 'A': return 'a';
00113 case 'B': return 'b';
00114 case 'C': return 'c';
00115 case 'D': return 'd';
00116 case 'E': return 'e';
00117 case 'F': return 'f';
00118 case 'G': return 'g';
00119 case 'H': return 'h';
00120 case 'I': return 'i';
00121 case 'J': return 'j';
00122 case 'K': return 'k';
00123 case 'L': return 'l';
00124 case 'M': return 'm';
00125 case 'N': return 'n';
00126 case 'O': return 'o';
00127 case 'P': return 'p';
00128 case 'Q': return 'q';
00129 case 'R': return 'r';
00130 case 'S': return 's';
00131 case 'T': return 't';
00132 case 'U': return 'u';
00133 case 'V': return 'v';
00134 case 'W': return 'w';
00135 case 'X': return 'x';
00136 case 'Y': return 'y';
00137 case 'Z': return 'z';
00138 default: return c;
00139 }
00140 }
00141
00142 string StringManipulation::intToString(int i)
00143 {
00144
00145
00146
00147
00148 char charArray[64];
00149 snprintf(charArray,64,"%d",i);
00150 string result(charArray);
00151 return result;
00152 }
00153
00154 string StringManipulation::intToHexString(int i)
00155 {
00156 ostringstream ostr;
00157 ostr << hex << i << ends;
00158 return ostr.str();
00159
00160
00161
00162
00163
00164 }
00165
00166 string StringManipulation::doubleToString(double d)
00167 {
00168 ostringstream ostr;
00169 ostr << d << ends;
00170 return ostr.str();
00171
00172
00173
00174
00175
00176 }
00177
00178 string StringManipulation::fancyDoubleToString(int sigFig, int width, double d)
00179 {
00180 ostringstream ostr;
00181 ostr.precision(sigFig);
00182 ostr << showpos;
00183 string output;
00184
00185 if(d == 0.0){
00186 ostr.precision(1);
00187 ostr.setf(ios::fixed);
00188 ostr << 0.0;
00189 output = ostr.str();
00190 } else if(fabs(d) > 1e-2)
00191 {
00192 ostr.setf(ios::fixed);
00193 ostr << d;
00194 output = ostr.str();
00195 } else {
00196 ostr.setf(ios::scientific);
00197 ostr << d;
00198 string temp = ostr.str();
00199 string::size_type loc = temp.find("e", 0 );
00200 temp.replace(loc,1,"*^");
00201 output = temp;
00202 }
00203
00204 int len = output.length();
00205 if(len < width)
00206 output.insert(0,width-len,' ');
00207 len = output.length();
00208
00209 return output;
00210 }
00211
00212 string StringManipulation::longToString(long l)
00213 {
00214 ostringstream ostr;
00215 ostr << l << ends;
00216 return ostr.str();
00217
00218
00219
00220
00221
00222 }
00223
00224 int StringManipulation::stringToInt(string & s)
00225 {
00226 istringstream istr(s, istringstream::in);
00227 int val;
00228 istr >> val;
00229 return val;
00230 }
00231
00232 long StringManipulation::stringToLong(string & s)
00233 {
00234 istringstream istr(s, istringstream::in);
00235 long val;
00236 istr >> val;
00237 return val;
00238 }
00239
00240 int StringManipulation::hexstringToInt(string & s)
00241 {
00242 istringstream istr(s, istringstream::in);
00243 int val;
00244 istr >> hex >> val;
00245 return val;
00246 }
00247
00248 double StringManipulation::stringToDouble(string & s)
00249 {
00250 istringstream istr(s, istringstream::in);
00251 double val;
00252 istr >> val;
00253 return val;
00254 }
00255