[DEV] add api to split string

This commit is contained in:
Edouard DUPIN 2016-12-28 14:43:34 +01:00
parent 6cf1b62ceb
commit 1c79ae4a3f
2 changed files with 18 additions and 0 deletions

View File

@ -905,6 +905,22 @@ std::vector<std::string> etk::split(const std::string& _input, char _val) {
}
#endif
std::vector<std::string> etk::split(const std::string& _input, std::string _val) {
std::vector<std::string> list;
size_t lastStartPos = 0;
for(size_t iii=0; iii<_input.size()-_val.size(); iii++) {
if (std::string(_input.begin()+iii, _input.begin()+iii+_val.size()) ==_val) {
list.push_back(std::string(_input, lastStartPos, iii - lastStartPos));
lastStartPos = iii+_val.size();
iii += _val.size()-1;
}
}
if (lastStartPos<_input.size()) {
list.push_back(std::string(_input, lastStartPos));
}
return list;
}
long double etk::string_to_long_double(const std::string& _str) {
long double ret = 0;
sscanf(_str.c_str(), "%Lf", &ret);

View File

@ -629,6 +629,8 @@ namespace etk {
std::vector<std::u32string> split(const std::u32string& _input, char32_t _val);
#endif
//! @not_in_doc
std::vector<std::string> split(const std::string& _input, std::string _val);
//! @not_in_doc
void sort(std::vector<std::string *>& _list);
#if __CPP_VERSION__ >= 2011
//! @previous