ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/utils/StringTokenizer.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/utils/StringTokenizer.cpp (file contents):
Revision 1930 by gezelter, Wed Jan 12 22:41:40 2005 UTC vs.
Revision 1945 by tim, Fri Jan 14 16:49:46 2005 UTC

# Line 159 | Line 159 | bool StringTokenizer::nextTokenAsBool() {
159          return false;
160      }
161   }
162 <
162 >
163 > //Since libstdc++(GCC 3.2) has an i/ostream::operator>>/<<(streambuf*) bug (Bug 9318)
164 > //Instead of using iostream facility, we use C library
165   int StringTokenizer::nextTokenAsInt() {
166      std::string token = nextToken();
167 <    std::istringstream iss(token);
168 <    int result;
167 <    
168 <    if (iss >> result) {
169 <        return result;
170 <    } else {
171 <        std::cerr << "unable to convert " << token << " to an integer" << std::endl;
172 <        return 0;
173 <    }
167 >  
168 >    return atoi(token.c_str());
169   }
170  
171   float StringTokenizer::nextTokenAsFloat() {
172      std::string token = nextToken();
173 <    std::istringstream iss(token);
174 <    float result;
180 <    
181 <    if (iss >> result) {
182 <        return result;
183 <    } else {
184 <        std::cerr << "unable to convert " << token << " to a float" << std::endl;
185 <        return 0.0;
186 <    }
173 >    convertFortranNumber(token);
174 >    return (float) (atof(token.c_str()));
175   }
176  
177   double StringTokenizer::nextTokenAsDouble() {
178      std::string token = nextToken();
179 <    std::istringstream iss(token);
180 <    double result;
193 <    
194 <    if (iss >> result) {
195 <        return result;
196 <    } else {
197 <        std::cerr << "unable to convert " << token << " to a double" << std::endl;
198 <        return 0.0;
199 <    }
179 >    convertFortranNumber(token);
180 >    return atof(token.c_str());
181   }
182  
183   std::string  StringTokenizer::peekNextToken() {
# Line 224 | Line 205 | std::string  StringTokenizer::peekNextToken() {
205      return result;    
206   }
207  
208 + void StringTokenizer::convertFortranNumber(std::string& fortranNumber) {
209 +    std::string::iterator i;
210 +    for(i = fortranNumber.begin(); i != fortranNumber.end(); ++i) {
211 +        if (*i == 'd' || *i == 'D') {
212 +            *i = 'E';
213 +        }
214 +    }
215 + }
216 +
217   }//end namespace oopse
218  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines