# | 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 |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |