Nemo  2.3.46
tstring Class Reference

A global class to handle string conversions and operations. More...

#include <tstring.h>

Static Public Member Functions

static unsigned int str2uint (const string &str)
 Converts a string into an unsigned integer. More...
 
static unsigned long str2ulong (const string &str)
 Converts a string into an unsigned integer. More...
 
static int str2int (const string &str)
 Converts a string into an integer. More...
 
static double str2dble (const string &str)
 Converts a string into a double. More...
 
static string int2str (const int i)
 Writes an integer value into a string. More...
 
static string ulong2str (const unsigned long i)
 Writes an integer value into a string. More...
 
static string dble2str (const double d)
 Writes a floating-point value into a string. More...
 
static vector< string > split (const string &str, const char delim, bool splitOnce=false)
 splits a string into substrings (tokens) delimited by a single character. More...
 
static vector< string > splitExcludeEnclosedDelimiters (const string &str, const char delim= ',', const string &encloser="([{\"")
 Splits a string into substrings (tokens) delimited by a single character. More...
 
static string getBlock (const string &str, const char start_c, const char end_c= '\0', bool includeEnclosing=true)
 Reads a substring delimited by two enclosing character from a string. More...
 
static string __get_block (istringstream &IN, const char start_c, const char end_c)
 Internal function used by getBlock to recursively read nested blocks. More...
 
static string removeChar (const string &str, const char c)
 Removes a given character from a string. More...
 
static string removeFirstCharOf (const string &str, const char c)
 Removes the first of a character found in a string. More...
 
static string removeLastCharOf (const string &str, const char c)
 Removes the last of a character found in a string. More...
 
static string removeEnclosingChar (const string &str, const char o, const char c, bool allowMissing=false)
 Removes characters enclosing a string. More...
 
static bool isanumber (const string &str)
 Check whether the string is a number. More...
 
static bool isNA (const string &str)
 Check whether the string is NA | NaN. More...
 

Private Member Functions

 tstring ()
 

Detailed Description

A global class to handle string conversions and operations.

Allows to parse the parameters argument strings into various tokens and to remove encolsing characters from a string.

Constructor & Destructor Documentation

tstring::tstring ( )
inlineprivate
44 {}

Member Function Documentation

static string tstring::__get_block ( istringstream &  IN,
const char  start_c,
const char  end_c 
)
inlinestatic

Internal function used by getBlock to recursively read nested blocks.

References fatal().

268  {
269  string out;
270  char c;
271  bool closed = false;
272 
273  out += start_c;
274 // cout << "start block : "<<start_c<<endl;
275  while (IN.get(c) && IN.good() && !IN.eof() ) {
276 
277  if(c == end_c) {
278 
279  out += c;
280  closed = true;
281  break;
282 
283  } else if(c == start_c) {//nested blocks
284 
285  out += __get_block(IN, start_c, end_c);
286 
287  } else out += c;
288 
289  } //__end_while__
290 // cout<<out<<endl;
291 
292  if(!closed) fatal("missing closing character '%c' in %s.\n", end_c, IN.str().c_str());
293 
294  // cout << "close block : "<< c << endl;
295 
296  return out;
297  }
static string __get_block(istringstream &IN, const char start_c, const char end_c)
Internal function used by getBlock to recursively read nested blocks.
Definition: tstring.h:267
void fatal(const char *str,...)
Definition: output.cc:90
static string tstring::dble2str ( const double  d)
inlinestatic

Writes a floating-point value into a string.

Referenced by TTQFreqExtractor::FHwrite(), and TTProtoWithMap::setRecombinationMapRandom().

116  {
117  ostringstream OUT;
118  OUT << d;
119  return OUT.str();
120  }
static string tstring::getBlock ( const string &  str,
const char  start_c,
const char  end_c = '\0',
bool  includeEnclosing = true 
)
inlinestatic

Reads a substring delimited by two enclosing character from a string.

May or may not retain the enclosing characters.

References error(), and fatal().

211  {
212  string out;
213  char c, end = 0;
214  bool closed = false;
215 
216  istringstream IN( removeEnclosingChar(str, ' ', ' ', true) );
217 
218  IN.get(c);
219 
220  if(end_c == 0) {
221  switch (c) {
222  case '(':
223  end = ')';
224  break;
225  case '{':
226  end = '}';
227  break;
228  case '[':
229  end = ']';
230  break;
231  case '"':
232  end = '"';
233  break;
234  default:
235  error("tstring::getBlock: unknown start of block \'%c\'\n", c);
236  break;
237  }
238  } else end = end_c;
239 
240  out += c;
241 
242  while (IN.get(c) && IN.good() && !IN.eof() ) {
243 
244  if(c == end) {
245 
246  out += c;
247  closed = true;
248  break;
249 
250  } else if(c == start_c) {//nested blocks
251 
252  out += __get_block(IN, start_c, end);
253 
254  } else out += c;
255 
256  } //__end_while__
257 
258 
259  if(!closed) fatal("missing closing character '%c' in %s.\n", end, str.c_str());
260 
261  return out;
262  }
static string __get_block(istringstream &IN, const char start_c, const char end_c)
Internal function used by getBlock to recursively read nested blocks.
Definition: tstring.h:267
void fatal(const char *str,...)
Definition: output.cc:90
int error(const char *str,...)
Definition: output.cc:73
static string removeEnclosingChar(const string &str, const char o, const char c, bool allowMissing=false)
Removes characters enclosing a string.
Definition: tstring.h:352
static bool tstring::isanumber ( const string &  str)
inlinestatic

Check whether the string is a number.

Referenced by FHPedigreeReader::FHread(), and Param::set().

382  {
383  unsigned int i = 0;
384 
385  while(i < str.size()) {
386  if(!isdigit(str[i]))
387  if(str[i] != '.' && str[i] != 'e' && str[i] != '-')
388  return false;
389  i++;
390  }
391 
392  return true;
393  }
static bool tstring::isNA ( const string &  str)
inlinestatic

Check whether the string is NA | NaN.

Referenced by FHPedigreeReader::FHread().

398  {
399  if("NA" == str) return true;
400 
401  if("na" == str) return true;
402 
403  if("NaN" == str) return true;
404 
405  if("NAN" == str) return true;
406 
407  if("nan" == str) return true;
408 
409  return false;
410  }
static string tstring::removeChar ( const string &  str,
const char  c 
)
inlinestatic

Removes a given character from a string.

303  {
304  string s(str);
305 
306  for (unsigned int i = 0; i < s.size(); i++) {
307  if (s[i] == c) {
308  s.erase(s.begin() + i);
309  i--;
310  }
311  }
312 
313  return s;
314  }
static string tstring::removeEnclosingChar ( const string &  str,
const char  o,
const char  c,
bool  allowMissing = false 
)
inlinestatic

Removes characters enclosing a string.

Can be used to remove parenthesis/brackets or trailing whitespace characters.

Parameters
strthe string
othe opening (front) character
cthe closing (back) character
allowMissingif trus, allows to ignore a missing enclosing character

References error().

Referenced by Param::parseArgument().

353  {
354  string s(str);
355  size_t first, last;
356 
357  first = s.find_first_of(o, 0);
358  if(first != 0) {
359  if(!allowMissing) {
360  error("tstring::removeEnclosingChar:: string \"%s\" not starting with \"%c\"\n.", s.c_str(), o);
361  return s;
362  }
363  } else
364  s.erase(s.begin());
365 
366  last = s.find_last_of(c);
367  if(last != s.length()-1 || last == string::npos) {
368  if(!allowMissing) {
369  error("tstring::removeEnclosingChar:: string \"%s\" not ending with \"%c\"\n.", s.c_str(), c);
370  return s;
371  }
372  } else
373  s.erase(s.end()-1);
374 
375  return s;
376  }
int error(const char *str,...)
Definition: output.cc:73
static string tstring::removeFirstCharOf ( const string &  str,
const char  c 
)
inlinestatic

Removes the first of a character found in a string.

Referenced by Param::getArgumentFromFile(), and Param::parseTemporalArgument().

320  {
321  string out(str);
322  size_t pos;
323 
324  if( (pos = out.find_first_of(c)) != string::npos )
325  out.erase(out.begin() + pos);
326 
327  return out;
328  }
static string tstring::removeLastCharOf ( const string &  str,
const char  c 
)
inlinestatic

Removes the last of a character found in a string.

334  {
335  string out(str);
336  size_t pos;
337 
338  if( (pos = out.find_last_of(c)) != string::npos )
339  out.erase(out.begin() + pos);
340 
341  return out;
342  }
static vector<string> tstring::split ( const string &  str,
const char  delim,
bool  splitOnce = false 
)
inlinestatic

splits a string into substrings (tokens) delimited by a single character.

Parameters
strthe input string
delimthe token delimiter
splitOnceif true, return the first token only

Referenced by Param::parseTemporalArgument().

129  {
130  vector<string> tokens;
131  string out(str);
132  size_t pos = 0;
133 
134  while(out.find(delim) != string::npos) {
135  pos = out.find_first_of(delim);
136  tokens.push_back( removeEnclosingChar(out.substr(0, pos), ' ', ' ', true) );
137  out = out.substr(pos+1);
138  if(splitOnce) break;
139  }
140 
141  tokens.push_back( removeEnclosingChar(out, ' ', ' ', true) );
142 
143  return tokens;
144  }
static string removeEnclosingChar(const string &str, const char o, const char c, bool allowMissing=false)
Removes characters enclosing a string.
Definition: tstring.h:352
static vector<string> tstring::splitExcludeEnclosedDelimiters ( const string &  str,
const char  delim = ',',
const string &  encloser = "([{\"" 
)
inlinestatic

Splits a string into substrings (tokens) delimited by a single character.

The tokens may contain the delimiter character if it is enclosed. For instance: `(@g0 {{0,1,0,10}}, @g10 {{1,0,2,2}})' –> [0] = `@g0 {{0,1,0,10}}' and [1] = `@g10 {{1,0,2,2}}'

Parameters
strthe input string
delimthe token delimiter, is a comma by default
encloserthe character that starts an enclosed string

Referenced by Param::parseArgument().

156  {\"")
157  {
158  if(str.find_first_of(encloser) == string::npos) return split(str, delim);
159 
160  string::size_type open, delim_pos, next_index = 0;
161  string pair, block, tail(str);
162  vector<string> tokens;
163 
164  while (tail.find(delim) != string::npos) {
165 
166  delim_pos = tail.find_first_of(delim);
167 
168  //check if delim is within any enclosed block
169  open = tail.find_first_of(encloser);
170 
171  //read and remove blocks
172  while (open < delim_pos) {
173 
174  block = getBlock(tail.substr(open, string::npos), tail.at(open));
175 
176  next_index = open + block.size();
177 
178  pair += tail.substr(0, next_index);
179 
180  tail = tail.substr(next_index);
181 
182  delim_pos = tail.find_first_of(delim);
183 
184  open = tail.find_first_of(encloser);
185  }
186 
187  pair += tail.substr(0, delim_pos);
188 
189  pair = removeEnclosingChar(pair, ' ', ' ', true);
190 
191  tokens.push_back(pair);
192  pair.clear();
193 
194  if(delim_pos != string::npos) tail = tail.substr(delim_pos + 1);
195  else break;
196  }
197 
198  if(tail.size() != 0) tokens.push_back( removeEnclosingChar(tail, ' ', ' ', true) );
199 
200  return tokens;
201  }
static string removeEnclosingChar(const string &str, const char o, const char c, bool allowMissing=false)
Removes characters enclosing a string.
Definition: tstring.h:352
static string getBlock(const string &str, const char start_c, const char end_c= '\0', bool includeEnclosing=true)
Reads a substring delimited by two enclosing character from a string.
Definition: tstring.h:209
static vector< string > split(const string &str, const char delim, bool splitOnce=false)
splits a string into substrings (tokens) delimited by a single character.
Definition: tstring.h:128
static double tstring::str2dble ( const string &  str)
inlinestatic

Converts a string into a double.

Referenced by Param::set().

85  {
86  istringstream IN(str);
87  double d;
88  IN >> d;
89  return d;
90  }
static int tstring::str2int ( const string &  str)
inlinestatic

Converts a string into an integer.

Referenced by Param::set(), LCE_StatServiceNotifier::setOccurence(), and LCE_Cross::setParameters().

74  {
75  istringstream IN(str);
76  int i;
77  IN >> i;
78  return i;
79  }
static unsigned int tstring::str2uint ( const string &  str)
inlinestatic

Converts a string into an unsigned integer.

Referenced by Param::parseTemporalArgument().

52  {
53  istringstream IN(str);
54  unsigned int i;
55  IN >> i;
56  return i;
57  }
static unsigned long tstring::str2ulong ( const string &  str)
inlinestatic

Converts a string into an unsigned integer.

Referenced by FHPedigreeReader::FHread().

63  {
64  istringstream IN(str);
65  unsigned long i;
66  IN >> i;
67  return i;
68  }
static string tstring::ulong2str ( const unsigned long  i)
inlinestatic

Writes an integer value into a string.

Referenced by SimRunner::run().

106  {
107  ostringstream OUT;
108  OUT << i;
109  return OUT.str();
110  }

The documentation for this class was generated from the following file:

Generated for Nemo v2.3.0 by  doxygen 1.8.8 --
Catalogued on GSR