Changeset 5183 in orxonox.OLD for trunk/src/lib/util
- Timestamp:
- Sep 15, 2005, 1:01:00 AM (19 years ago)
- Location:
- trunk/src/lib/util
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/util/substring.cc
r5150 r5183 52 52 { 53 53 const char* offset = string; 54 c har* end = strchr( string, splitter);54 const char* end = strchr( string, splitter); 55 55 while( end != NULL) 56 56 { … … 60 60 assert( strings[i] != NULL); 61 61 strncpy( strings[i], offset, l); 62 strings[i][l] = 0;62 strings[i][l] = '\0'; 63 63 i++; 64 64 end++; … … 74 74 else 75 75 { 76 this->strings[0] = new char[strlen(string) ];76 this->strings[0] = new char[strlen(string)+1]; 77 77 strcpy(this->strings[0], string); 78 } 79 } 80 81 82 /** 83 * Splits a String into a Substring removing all whiteSpaces 84 * @param string the String to Split 85 * @param whiteSpaces MUST BE __TRUE__ 86 * 87 */ 88 SubString::SubString(const char* string, bool whiteSpaces) 89 { 90 this->splittersCount = 0; 91 if (string == NULL || whiteSpaces == false) 92 { 93 this->strings = NULL; 94 return; 95 } 96 97 // chop the input to the beginning of something usefull 98 if (strlen(string) > 0) 99 string = string + strspn(string, " \t\n"); 100 101 // count the Splitters 102 bool lastWasWhiteSpace = false; 103 for(unsigned int i = 0; i < strlen(string); i++) 104 if( string[i] == ' ' || string[i] == '\t' || string[i] == '\n' ) 105 lastWasWhiteSpace = true; 106 else 107 { 108 if (lastWasWhiteSpace) 109 this->splittersCount ++; 110 lastWasWhiteSpace = false; 111 } 112 113 this->splittersCount += 1; 114 115 printf("splitterCount = %d\n", this->splittersCount); 116 117 this->strings = new char*[this->splittersCount]; 118 assert (strings != NULL); 119 120 int l = 0; 121 unsigned int i = 0; 122 if( this->splittersCount > 1) 123 { 124 const char* offset = string; 125 const char* end = offset + strcspn(offset, " \t\n"); 126 for (i = 0; i < this->splittersCount; i++) 127 { 128 assert( i < this->splittersCount); 129 l = end - offset; 130 this->strings[i] = new char[l + 1]; 131 assert( strings[i] != NULL); 132 strncpy( strings[i], offset, l); 133 strings[i][l] = '\0'; 134 end += strspn(end, " \t\n"); 135 offset = end; 136 printf("'%s'\n", end); 137 end = offset + strcspn(offset, " \t\n"); 138 } 139 } 140 else 141 { 142 unsigned int length = strcspn(string, " \t\n"); 143 this->strings[0] = new char[length+1]; 144 strncpy(this->strings[0], string, length); 145 this->strings[0][length] = '\0'; 78 146 } 79 147 } … … 86 154 if (this->strings) 87 155 { 88 for( int i = 0; i < this->splittersCount; i++)156 for(unsigned int i = 0; i < this->splittersCount; i++) 89 157 delete[] this->strings[i]; 90 158 delete[] this->strings; … … 105 173 } 106 174 107 108 109 175 /** 110 176 * Some nice debug information about this SubString … … 113 179 { 114 180 PRINT(0)("Substring-information::count=%d ::", this->splittersCount); 115 for (int i = 0; i < this->splittersCount; i++) 116 PRINT(0)("s%d:%s::", i, this->strings[i]); 181 if (this->strings != NULL) 182 for (unsigned int i = 0; i < this->splittersCount; i++) 183 PRINT(0)("s%d='%s'::", i, this->strings[i]); 117 184 PRINT(0)("\n"); 118 185 } -
trunk/src/lib/util/substring.h
r5150 r5183 12 12 public: 13 13 SubString(const char* string, char splitter = ','); 14 SubString(const char* string, bool whiteSpaces); 14 15 ~SubString(); 15 16
Note: See TracChangeset
for help on using the changeset viewer.