Test

Dependencies:   X_NUCLEO_IHM01A1

Committer:
jackcassa1967
Date:
Sun Dec 29 18:36:23 2019 +0000
Revision:
3:24ab1c8fefef
Start

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jackcassa1967 3:24ab1c8fefef 1 ///////////////////////////////////////////////////////////////////////////////
jackcassa1967 3:24ab1c8fefef 2 // Tokenizer.h
jackcassa1967 3:24ab1c8fefef 3 // ===========
jackcassa1967 3:24ab1c8fefef 4 // General purpose string tokenizer (C++ string version)
jackcassa1967 3:24ab1c8fefef 5 //
jackcassa1967 3:24ab1c8fefef 6 // The default delimiters are space(" "), tab(\t, \v), newline(\n),
jackcassa1967 3:24ab1c8fefef 7 // carriage return(\r), and form feed(\f).
jackcassa1967 3:24ab1c8fefef 8 // If you want to use different delimiters, then use setDelimiter() to override
jackcassa1967 3:24ab1c8fefef 9 // the delimiters. Note that the delimiter string can hold multiple characters.
jackcassa1967 3:24ab1c8fefef 10 //
jackcassa1967 3:24ab1c8fefef 11 // AUTHOR: Song Ho Ahn (song.ahn@gmail.com)
jackcassa1967 3:24ab1c8fefef 12 // CREATED: 2005-05-25
jackcassa1967 3:24ab1c8fefef 13 // UPDATED: 2011-03-08
jackcassa1967 3:24ab1c8fefef 14 ///////////////////////////////////////////////////////////////////////////////
jackcassa1967 3:24ab1c8fefef 15
jackcassa1967 3:24ab1c8fefef 16 #ifndef TOKENIZER_H
jackcassa1967 3:24ab1c8fefef 17 #define TOKENIZER_H
jackcassa1967 3:24ab1c8fefef 18
jackcassa1967 3:24ab1c8fefef 19 #include <string>
jackcassa1967 3:24ab1c8fefef 20 #include <vector>
jackcassa1967 3:24ab1c8fefef 21
jackcassa1967 3:24ab1c8fefef 22 // default delimiter string (space, tab, newline, carriage return, form feed)
jackcassa1967 3:24ab1c8fefef 23 const std::string DEFAULT_DELIMITER = " \t\v\n\r\f";
jackcassa1967 3:24ab1c8fefef 24
jackcassa1967 3:24ab1c8fefef 25 class Tokenizer
jackcassa1967 3:24ab1c8fefef 26 {
jackcassa1967 3:24ab1c8fefef 27 public:
jackcassa1967 3:24ab1c8fefef 28 // ctor/dtor
jackcassa1967 3:24ab1c8fefef 29 Tokenizer();
jackcassa1967 3:24ab1c8fefef 30 Tokenizer(const std::string& str, const std::string& delimiter=DEFAULT_DELIMITER);
jackcassa1967 3:24ab1c8fefef 31 ~Tokenizer();
jackcassa1967 3:24ab1c8fefef 32
jackcassa1967 3:24ab1c8fefef 33 // set string and delimiter
jackcassa1967 3:24ab1c8fefef 34 void set(const std::string& str, const std::string& delimiter=DEFAULT_DELIMITER);
jackcassa1967 3:24ab1c8fefef 35 void setString(const std::string& str); // set source string only
jackcassa1967 3:24ab1c8fefef 36 void setDelimiter(const std::string& delimiter); // set delimiter string only
jackcassa1967 3:24ab1c8fefef 37
jackcassa1967 3:24ab1c8fefef 38 std::string next(); // return the next token, return "" if it ends
jackcassa1967 3:24ab1c8fefef 39
jackcassa1967 3:24ab1c8fefef 40 std::vector<std::string> split(); // return array of tokens from current cursor
jackcassa1967 3:24ab1c8fefef 41
jackcassa1967 3:24ab1c8fefef 42 protected:
jackcassa1967 3:24ab1c8fefef 43
jackcassa1967 3:24ab1c8fefef 44
jackcassa1967 3:24ab1c8fefef 45 private:
jackcassa1967 3:24ab1c8fefef 46 void skipDelimiter(); // ignore leading delimiters
jackcassa1967 3:24ab1c8fefef 47 bool isDelimiter(char c); // check if the current char is delimiter
jackcassa1967 3:24ab1c8fefef 48
jackcassa1967 3:24ab1c8fefef 49 std::string buffer; // input string
jackcassa1967 3:24ab1c8fefef 50 std::string token; // output string
jackcassa1967 3:24ab1c8fefef 51 std::string delimiter; // delimiter string
jackcassa1967 3:24ab1c8fefef 52 std::string::const_iterator currPos; // string iterator pointing the current position
jackcassa1967 3:24ab1c8fefef 53
jackcassa1967 3:24ab1c8fefef 54 };
jackcassa1967 3:24ab1c8fefef 55
jackcassa1967 3:24ab1c8fefef 56 #endif // TOKENIZER_H