ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-2.0/src/utils/StringUtils.cpp
Revision: 1792
Committed: Mon Nov 29 17:59:56 2004 UTC (19 years, 7 months ago) by tim
File size: 2965 byte(s)
Log Message:
add Trim Algorithm for std::string

File Contents

# User Rev Content
1 tim 1492 #include "utils/StringUtils.hpp"
2 gezelter 1490
3 gezelter 1590 using namespace std;
4    
5 gezelter 1614 namespace oopse {
6 gezelter 1490 string UpperCase(const string& S) {
7     string uc = S;
8     unsigned int n = uc.size();
9     for (unsigned int j = 0; j < n; j++) {
10     char sj = uc[j];
11     if (sj >= 'a' && sj <= 'z') uc[j] = (char)(sj - ('a' - 'A'));
12     }
13     return uc;
14     }
15    
16     string LowerCase(const string& S) {
17     string lc = S;
18     unsigned int n = lc.size();
19     for (unsigned int j = 0; j < n; j++) {
20     char sj = lc[j];
21     if (sj >= 'A' && sj <= 'Z') lc[j] = (char)(sj + ('a' - 'A'));
22     }
23     return lc;
24     }
25 gezelter 1590
26 chrisfen 1598 char* trimSpaces(char *str) {
27     size_t len;
28     char *right, *left;
29    
30     if (strlen(str) == 0) return(str);
31    
32     /* Trim whitespace from left side */
33     for (left = str; isspace(*left); left++);
34    
35     /* Trim whitespace from right side */
36     if ((len = strlen(left)))
37     {
38     right = left + (len - 1);
39    
40     while (isspace(*right))
41     {
42     *right = '\0';
43     right--;
44     }
45     }
46    
47     /* Only do the str copy if there were spaces to the left */
48     if (left != str)
49     strcpy(str, left);
50    
51     return (str);
52     }
53    
54     int findBegin(istream &theStream, char* startText ){
55 gezelter 1590 const int MAXLEN = 1024;
56     char readLine[MAXLEN];
57     int foundText = 0;
58     int lineNum;
59     char* the_token;
60     char* eof_test;
61    
62     // rewind the stream
63     theStream.seekg (0, ios::beg);
64     lineNum = 0;
65    
66     if (!theStream.eof()) {
67     theStream.getline(readLine, MAXLEN);
68     lineNum++;
69     } else {
70     printf( "Error fast forwarding stream: stream is empty.\n");
71     return -1;
72     }
73    
74     while ( !foundText ) {
75    
76     if (theStream.eof()) {
77     printf("Error fast forwarding stream at line %d: "
78     "stream ended unexpectedly.\n", lineNum);
79     return -1;
80     }
81 chrisfen 1598
82 gezelter 1590 the_token = strtok( readLine, " ,;\t" );
83 chrisfen 1598 if ( the_token != NULL)
84 gezelter 1600 if (!strcasecmp("begin", the_token)) {
85 chrisfen 1598 the_token = strtok( NULL, " ,;\t" );
86     if ( the_token != NULL){
87 gezelter 1600 foundText = !strcasecmp( startText, the_token );
88 chrisfen 1598 }
89     }
90    
91 gezelter 1590 if (!foundText) {
92     if (!theStream.eof()) {
93     theStream.getline(readLine, MAXLEN);
94     lineNum++;
95     } else {
96     printf( "Error fast forwarding stream at line %d: "
97     "stream ended unexpectedly.\n", lineNum);
98 chrisfen 1598 return -1;
99 gezelter 1590 }
100     }
101     }
102     return lineNum;
103     }
104    
105     int countTokens(char *line, char *delimiters) {
106     /* PURPOSE: RETURN A COUNT OF THE NUMBER OF TOKENS ON THE LINE. */
107    
108     char *working_line; /* WORKING COPY OF LINE. */
109     int ntokens; /* NUMBER OF TOKENS FOUND IN LINE. */
110     char *strtok_ptr; /* POINTER FOR STRTOK. */
111    
112     strtok_ptr= working_line= strdup(line);
113    
114     ntokens=0;
115     while (strtok(strtok_ptr,delimiters)!=NULL)
116     {
117     ntokens++;
118     strtok_ptr=NULL;
119     }
120    
121     free(working_line);
122     return(ntokens);
123     }
124    
125     int isEndLine(char *line) {
126     char *working_line;
127     char *foo;
128    
129     working_line = strdup(line);
130    
131     foo = strtok(working_line, " ,;\t");
132    
133 gezelter 1600 if (foo != NULL) {
134    
135     if (!strcasecmp(foo, "end")) return 1;
136    
137     }
138 gezelter 1590
139     return 0;
140     }
141 tim 1792
142 gezelter 1614 }