24 #ifndef __UTILS_MISC_STRING_SPLIT_H_ 25 #define __UTILS_MISC_STRING_SPLIT_H_ 40 std::vector<std::string>
str_split(
const std::string &s,
char delim =
'/')
42 std::vector<std::string> elems;
43 std::stringstream ss(s);
45 while(std::getline(ss, item, delim)) {
46 if (item !=
"") elems.push_back(item);
58 std::vector<std::string>
str_split(
const std::string &s, std::string delim)
60 std::vector<std::string> elems;
61 std::string::size_type pos = 0;
63 std::string::size_type dpos = s.find(delim, pos);
64 std::string sub = s.substr(pos, dpos);
66 if (dpos != std::string::npos) pos = dpos + delim.length();
68 }
while (pos != std::string::npos);
78 std::list<std::string>
str_split_list(
const std::string &s,
char delim =
'/')
80 std::list<std::string> elems;
81 std::stringstream ss(s);
83 while(std::getline(ss, item, delim)) {
84 if (item !=
"") elems.push_back(item);
96 std::string
str_join(
const std::vector<std::string> &v,
char delim =
'/')
99 for (
size_t i = 0; i < v.size(); ++i) {
100 if (i > 0) rv += delim;
112 std::string
str_join(
const std::list<std::string> &l,
char delim =
'/')
116 for (std::list<std::string>::const_iterator i = l.begin(); i != l.end(); ++i) {
117 if (first) first =
false;
132 template <
typename InputIterator>
134 str_join(
const InputIterator &first,
const InputIterator &last,
char delim =
'/')
137 bool is_first =
true;
138 for (InputIterator i = first; i != last; ++i) {
139 if (is_first) is_first =
false;
153 std::string
str_join(
const std::list<std::string> &l, std::string delim)
157 for (std::list<std::string>::const_iterator i = l.begin(); i != l.end(); ++i) {
158 if (first) first =
false;
172 template <
typename InputIterator>
174 str_join(
const InputIterator &first,
const InputIterator &last, std::string delim)
177 bool is_first =
true;
178 for (InputIterator i = first; i != last; ++i) {
179 if (is_first) is_first =
false;
195 std::queue<std::string> elems;
196 std::stringstream ss(s);
198 while(std::getline(ss, item, delim)) {
199 if (item !=
"") elems.push(item);
Fawkes library namespace.
static std::list< std::string > str_split_list(const std::string &s, char delim='/')
Split string by delimiter.
static std::queue< std::string > str_split_to_queue(const std::string &s, char delim='/')
Split string by delimiter.
static std::string str_join(const std::vector< std::string > &v, char delim='/')
Join vector of strings string using given delimiter.
static std::vector< std::string > str_split(const std::string &s, char delim='/')
Split string by delimiter.