Changeset 7221 in orxonox.OLD for trunk/src/lib/util/substring.h
- Timestamp:
- Mar 15, 2006, 3:10:45 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/util/substring.h
r6648 r7221 7 7 #define _SUBSTRING_H 8 8 9 #include <vector> 10 #include <string> 11 12 typedef enum { 13 SL_NORMAL, 14 SL_ESCAPE, 15 SL_SAFEMODE, 16 SL_SAFEESCAPE, 17 SL_COMMENT, 18 } SPLIT_LINE_STATE; 19 9 20 //! A class that can load one string and split it in multipe ones 10 21 class SubString 11 22 { 12 23 public: 13 SubString(const char* string, char splitter = ',');14 SubString(const char*string, bool whiteSpaces);15 SubString(const char* string, const char* splitters, char escapeChar ='\\');24 SubString(const std::string& string = "", char splitter = ','); 25 SubString(const std::string& string, bool whiteSpaces); 26 SubString(const std::string& string, const std::string& splitters, char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0'); 16 27 ~SubString(); 17 28 18 const char* operator[](unsigned int i) { return this->getString(i); }; 29 unsigned int split(const std::string& string = "", char splitter = ','); 30 unsigned int split(const std::string& string, bool whiteSpaces); 31 unsigned int split(const std::string& string, const std::string& splitters, char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0'); 19 32 20 inline unsigned int getCount() { return this->splittersCount; }; 21 const char* getString(unsigned int i); 33 34 const std::string& operator[](unsigned int i) { return this->getString(i); }; 35 36 inline unsigned int getCount() { return this->strings.size(); }; 37 const std::string& getString(unsigned int i) { return (i < this->strings.size()) ? this->strings[i] : emptyString; }; 22 38 unsigned int getOffset(unsigned int i); 39 40 static SPLIT_LINE_STATE splitLine(std::vector<std::string>& ret,std::vector<unsigned int>& offsets, 41 const std::string& line, const std::string& delimiters = " \t\r\n", 42 char escape_char = '\\', char safemode_char = '"', char comment_char = '\0', 43 SPLIT_LINE_STATE start_state = SL_NORMAL); 23 44 24 45 void debug() const; 25 46 26 47 private: 27 char** strings; //!< strings produced from a single string splitted in multiple strings 28 unsigned int* offsets; //!< offsets of the beginning of the input-string to the beginning of each substring. 29 unsigned int splittersCount; //!< how many splitted parts 48 std::vector<std::string> strings; //!< strings produced from a single string splitted in multiple strings 49 std::vector<unsigned int> offsets; //!< offsets of the beginning of the input-string to the beginning of each substring. 50 51 static const std::string emptyString; 30 52 }; 31 53
Note: See TracChangeset
for help on using the changeset viewer.