#ifndef _Tokenizer_H__ #define _Tokenizer_H__ #include #include #include /** * String tokenizer * * Splits a given string into several smaller strings * using a delmiter (default is the comma). * Returns the result as a vector object * * @author Nicolas Perrenoud */ inline std::vector tokenize(const std::string& str, const std::string& delimiters = ",") { std::vector tokens; // Skip delimiters at beginning. std::string::size_type lastPos = str.find_first_not_of(delimiters, 0); // Find first "non-delimiter". std::string::size_type pos = str.find_first_of(delimiters, lastPos); while (std::string::npos != pos || std::string::npos != lastPos) { // Found a token, add it to the vector. tokens.push_back(str.substr(lastPos, pos - lastPos)); // Skip delimiters. Note the "not_of" lastPos = str.find_first_not_of(delimiters, pos); // Find next "non-delimiter" pos = str.find_first_of(delimiters, lastPos); } return tokens; } #endif /* _Tokenizer_H__ */