blob: f19e0f486cbc343913e4f4583be573cece34d4b2 [file] [log] [blame]
#ifndef STRINGTOKENIZER_H
#define STRINGTOKENIZER_H
#include <string>
#include <stdexcept>
class StringTokenizer
{
public:
StringTokenizer(const std::string& tokens_line, const std::string& tokens_delimiter);
StringTokenizer(const StringTokenizer& orig) = default;
StringTokenizer& operator=(const StringTokenizer& orig) = default;
StringTokenizer(StringTokenizer&& orig) = default;
StringTokenizer& operator=(StringTokenizer&& orig) = default;
virtual ~StringTokenizer() noexcept
{
}
virtual bool has_next();
// @throws std::bad_alloc, std::out_of_range
virtual std::string next();
private:
const std::string& line;
const std::string& delimiter;
size_t length {0};
size_t token_offset {0};
size_t token_length {0};
size_t index {0};
bool have_token {false};
void find_next_token();
};
#endif /* STRINGTOKENIZER_H */