69 lines
1.3 KiB
C++
69 lines
1.3 KiB
C++
/*
|
||
* © 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 <string>
|
||
#include <vector>
|
||
|
||
/**
|
||
* split an input-file into various tokens
|
||
*/
|
||
class Splitter {
|
||
|
||
std::string str;
|
||
char sep = ';';
|
||
std::vector<std::string> 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));}
|
||
const int getInteger(const int idx) const {return std::stoi(get(idx));}
|
||
|
||
size_t size() const {return split.size();}
|
||
|
||
bool empty() const {return split.empty();}
|
||
|
||
bool isEmpty(int idx) const { return has(idx) ? get(idx) == "" : true; }
|
||
|
||
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
|