StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ChapiStringUtilities.cxx
1 #include "ChapiStringUtilities.h"
2 #include <sys/types.h>
3 #include <string.h>
4 using namespace std;
5 typedef vector<string>::const_iterator VCI;
6 
7 namespace chapi_string_utilities
8 {
9 
10 vector<string> slice(string A, string sep)
11 {
12  vector<string> v;
13  string tmp = "";
14 
15  u_int N = A.size();
16  for (u_int i=0; i<N; i++)
17  {
18  string comp = A.substr(i,1);
19  if (comp != sep)
20  {
21  tmp += comp;
22  }
23  else
24  {
25  if (tmp!="") {v.push_back(tmp);}
26  tmp = "";
27  }
28  }
29 v.push_back(tmp);
30 
31  return v;
32 }
34 map<string,string> associate_pieces(vector<string> v, string sep)
35 {
36  map<string,string> m;
37  VCI b = v.begin();
38  VCI e = v.end();
39  for (VCI i = b; i!=e; ++i)
40  {
41  vector<string> ss = slice(*i,sep);
42  if (ss[0] !="")
43  {
44  m[ss[0]] = ss[1];
45  }
46  }
47  return m;
48 }
49 
51 void cut_string_after_sub(string& input, const string& sub)
52 {
53  /* Cut string after and including the substring */
54 
55  string::size_type I;
56  string::iterator b;
57  string::iterator e;
58  I = input.find_last_of(sub);
59  if (I==string::npos) return;
60  b = input.begin() + I;
61  e = input.end();
62  input.erase(b,e);
63 }
65 bool good_character(char* src)
66 {
67  if (strncmp(src," ",1)==0) return false;
68  if (strncmp(src,"\n",1)==0) return false;
69  if (strncmp(src,"\t",1)==0) return false;
70  if (strncmp(src,"\r",1)==0) return false;
71  return true;
72 }
74 string filter_string(char* src)
75 {
76  int n=strlen(src);
77  string rtrn;
78 
79  for (int i=0; i<n; i++)
80  {
81  if (good_character(&src[i]))
82  {
83  rtrn += src[i];
84  }
85  }
86  return rtrn;
87 }
89 
90 }