1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#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 */
|