| 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() { |
| 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 |
|
|