1 #ifndef _STREAMTOOLS_H_
2 #define _STREAMTOOLS_H_
20 inline std::vector<std::string> split(std::istream &in,
const char &delim)
22 std::vector<std::string> elements;
24 size_t last_delim=0, this_delim=0;
27 this_delim=line.find(delim, last_delim);
28 elements.push_back( line.substr(last_delim, this_delim-last_delim) );
29 last_delim=this_delim+1;
30 }
while ( this_delim!=std::string::npos );
35 inline std::vector<std::string> split(
const std::string &s,
const char &delim)
39 return split(ss, delim);
57 inline std::vector<std::string> split_first(std::istream &in,
const char &delim)
59 std::string first, second;
60 std::getline(in, first, delim);
61 std::getline(in, second);
62 if (second.size()!=0)
return std::vector <std::string> {first, second};
63 else return std::vector <std::string> {first};
68 inline std::vector<std::string> split_first(
const std::string &s,
const char &delim)
72 return split_first(ss, delim);
79 inline std::vector<std::string> split_last(std::istream &in,
const char &delim)
83 size_t pos=line.rfind(delim);
84 size_t end=line.size();
85 if (pos!= std::string::npos )
return std::vector <std::string> {line.substr(0, pos), line.substr(pos, end)};
86 else return std::vector <std::string> {line};
91 inline std::vector<std::string> split_last(
const std::string &s,
const char &delim)
95 return split_last(ss, delim);
99 inline std::string sanitize (std::string &s){
100 std::replace( s.begin(), s.end(),
'\t',
' ' );
101 std::replace( s.begin(), s.end(),
'\'',
'"' );
102 std::replace( s.begin(), s.end(),
'>',
' ' );
103 std::replace( s.begin(), s.end(),
'<',
' ' );
108 inline std::string sanitize (
const std::string &s){
114 bool check_stream(std::istream *);