Я попытался решить эту проблему с помощью ранее отвеченных вопросов, таких как Преобразование из строки в число с плавающей запятой изменяет номер, но мне это не удалось.
В моем коде я беру строку, полную символов ' ', и преобразую ее в число с плавающей запятой, используя stringstream. Это работало нормально (вернуло мне число с нулевым значением), пока я не выполнил еще одно преобразование сразу после этого. Когда после этого выполняется преобразование, значение, хранящееся в ранее преобразованном вещественном числе, равно не нулю, а 4,57048e-41. Я надеюсь, что следующий код более четко объясняет мою проблему.
Я начал с:
std::stringstream ss;
float a;
float b;
for(int i=0; i<LIM; ++i){
//some other conversions using same stringstream
//clearing stringstream
ss.str( std::string() );
ss.clear();
ss << str1; //string full of empty spaces, length of 5
ss >> a;
std::cout << a;//prints zero
}
Это работало просто отлично, но когда я изменил его на
std::stringstream ss;
float a;
float b;
for(int i=0; i<LIM; ++i){
//some other conversions using same stringstream
//clearing stringstream
ss.str( std::string() );
ss.clear();
ss << str1; //string full of empty spaces, length of 5
ss >> a;
std::cout << a;//prints 4.57048e-41
ss.str ( std::string() );
ss.clear();
ss << str2; //another string full of empty spaces, length of 5
ss >> b;
std::cout << b;//prints zero
}
Я использую gcc 4.6.3 со следующими флагами: -o2 -Wall -Wextra -ansi -pedantic
Любая помощь будет принята с благодарностью, но я не хочу использовать двойников.