/* * © Copyright 2014 – Urheberrechtshinweis * Alle Rechte vorbehalten / All Rights Reserved * * Programmcode ist urheberrechtlich geschuetzt. * Das Urheberrecht liegt, soweit nicht ausdruecklich anders gekennzeichnet, bei Frank Ebner. * Keine Verwendung ohne explizite Genehmigung. * (vgl. § 106 ff UrhG / § 97 UrhG) */ #ifndef DATA_SPLITTER_H #define DATA_SPLITTER_H #include #include /** * split an input-file into various tokens */ class Splitter { std::string str; char sep = ';'; std::vector split; public: /** ctor */ Splitter(const std::string& str, const char sep = ';') : str(str), sep(sep) { build(); } bool has(const int idx) const {return split.size() > idx;} const std::string& get(const int idx) const {return split.at(idx);} const float getFloat(const int idx) const {return std::stof(get(idx));} size_t size() const {return split.size();} bool empty() const {return split.empty();} private: void build() { std::string cur; for (char c : str) { if (c == sep) { split.push_back(cur); cur = ""; } else { cur += c; } } split.push_back(cur); } }; #endif // DATA_SPLITTER_H