00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00013
00014
00015
00017
00019
00020
00022
00023
00024
00025 #define _STRINGUTIL_H_
00026
00027 #include <string>
00028 #include <iostream>
00029
00030 #include <vector>
00031
00032
00033 #ifndef DOXYGEN_SHOULD_SKIP_THIS // doxygen skip this...
00034
00035 #ifdef _DEBUG_ // _DEBUG_ activate debugging mode on stringutil
00036 #define _STRINGUTILDEBUG_
00037 #endif
00038
00039
00040
00041
00042
00043
00044
00045
00046 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS // doxygen skip this...
00047
00048
00049
00050
00052
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00084
00088
00091
00092
00094 #define _STRINGUTILSTRDELIMITER '\"'
00095
00096 #define _STRINGUTILSCAPECHAR '\\'
00097
00098 #define _STRINGUTILCOMMENTCHAR '#'
00099
00100 #define _STRINGUTILCOLUMNSEPARATOR '\t'
00101
00102 #define _STRINGUTILCNTRLMARK '^'
00103
00104 #define _STRINGUTILHEXAMARK 'X'
00105
00107 #define _STRINGUTILCHARTABLE { \
00108 \
00109 \
00110 \
00111 {'a', '\a'}, \
00112 {'b', '\b'}, \
00113 {'e', '\e'}, \
00114 {'f', '\f'}, \
00115 {'n', '\n'}, \
00116 {'r', '\r'}, \
00117 {'t', '\t'}, \
00118 {'v', '\v'}, \
00119 {'\0', '\0'}, \
00120 }
00121
00125 bool stringutilprinterror();
00126 bool stringutilprinterror(bool status);
00127
00131 bool stringutilthrowexception();
00132 bool stringutilthrowexception(bool status);
00133
00135
00137
00138
00139
00140
00141 inline bool isextended(char c)
00142 {
00143 return ((unsigned int)c) > 160;
00144 }
00145
00147
00148
00149
00150
00151
00152
00153 inline bool iswhite(char c)
00154 {
00155 return !isgraph(c) && !isextended(c);
00156 }
00157
00158 inline char tocntrl(char c)
00159 {
00160
00161 if(iscntrl(toupper(c)-'A'+1))
00162 return toupper(c)-'A'+1;
00163 else
00164 return c;
00165 }
00166
00168
00170
00171
00173
00174
00175
00178
00179
00180
00181
00186
00187
00189 vector <string> &parsestring(vector <string> &strlist, char strdelimiter=_STRINGUTILSTRDELIMITER, char scapechar=_STRINGUTILSCAPECHAR);
00190
00192 string &reverseparsestring(string &s, char strdelimiter=_STRINGUTILSTRDELIMITER, char scapechar=_STRINGUTILSCAPECHAR);
00193
00195 vector <string> &reverseparsestring(vector <string> &strlist, char strdelimiter=_STRINGUTILSTRDELIMITER, char scapechar=_STRINGUTILSCAPECHAR);
00196
00207 unsigned findstringdelimiterclose(string const &s, unsigned pos=0, char strdelimiter=_STRINGUTILSTRDELIMITER, char scapechar=_STRINGUTILSCAPECHAR);
00208
00210 bool stringdelimiterbalanced(string const &s, char strdelimiter=_STRINGUTILSTRDELIMITER, char scapechar=_STRINGUTILSCAPECHAR, unsigned pos1=0, unsigned pos2=(~0U));
00213 bool needdelimiter(string const &s, char strdelimiter=_STRINGUTILSTRDELIMITER, char scapechar=_STRINGUTILSCAPECHAR);
00214
00223 istream &gettextline(istream &f, string &line, char comment=_STRINGUTILCOMMENTCHAR,
00224 char strdelimiter=_STRINGUTILSTRDELIMITER,
00225 char scapechar=_STRINGUTILSCAPECHAR, char newlinedelimiter='\0');
00226
00231
00232
00233
00234
00235
00236
00237 istream &getline(istream &f, vector <string> &dataline, char separator = _STRINGUTILCOLUMNSEPARATOR,
00238 char comment=_STRINGUTILCOMMENTCHAR, char strdelimiter=_STRINGUTILSTRDELIMITER,
00239 char scapechar=_STRINGUTILSCAPECHAR, char newline='\0');
00240
00243
00244
00245
00246
00247
00248
00249
00250 istream &getlines(istream &f, vector <vector <string> > &datalist,
00251 char separator = _STRINGUTILCOLUMNSEPARATOR,
00252 char comment=_STRINGUTILCOMMENTCHAR,
00253 char strdelimiter=_STRINGUTILSTRDELIMITER,
00254 char scapechar=_STRINGUTILSCAPECHAR, char newline='\0');
00255
00256
00257
00258
00262
00263 char separator = _STRINGUTILCOLUMNSEPARATOR, char newline='\0');
00264
00267 ostream &putlines(ostream &f, vector <vector<string> > &datalist,
00268 char separator = _STRINGUTILCOLUMNSEPARATOR, char newline='\0');
00269
00270
00271
00274
00275
00276
00277
00280 #endif // #define _STRINGUTIL_H_
00281