Commit 2e1c264f authored by Daniel Krebs's avatar Daniel Krebs

lib/utils: add string tokenizer

parent 78f57db7
#pragma once
#include <string>
#include <vector>
#include <list>
namespace villas {
namespace utils {
std::vector<std::string>
tokenize(std::string s, std::string delimiter);
} // namespace utils
} // namespace villas
......@@ -24,6 +24,7 @@ set(SOURCES
plugin.c
plugin.cpp
utils.c
utils.cpp
list.c
log.c
log_config.c
......
#include <vector>
#include <string>
#include "utils.hpp"
namespace villas {
namespace utils {
std::vector<std::string>
tokenize(std::string s, std::string delimiter)
{
std::vector<std::string> tokens;
size_t lastPos = 0;
size_t curentPos;
while((curentPos = s.find(delimiter, lastPos)) != std::string::npos) {
const size_t tokenLength = curentPos - lastPos;
tokens.push_back(s.substr(lastPos, tokenLength));
// advance in string
lastPos = curentPos + delimiter.length();
}
// check if there's a last token behind the last delimiter
if(lastPos != s.length()) {
const size_t lastTokenLength = s.length() - lastPos;
tokens.push_back(s.substr(lastPos, lastTokenLength));
}
return tokens;
}
} // namespace utils
} // namespace villas
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment