We're using boost 1.51. Management is reluctant to upgrade because the software is for manned space flight and our current boost version has been stable.

 

Wanted to see if there was a known bug with boost::lexical_cast<double>. We're seeing failures on what appear to be valid float strings. When we catch the exception, and simply do a second cast on the same string, the cast succeeds. The Code fragment:

 

  try { dVal = boost::lexical_cast<double>(theValue); }

  catch(boost::bad_lexical_cast &eX)

  {

    ... more code ...

    firstAttemptFailed = true;

  }

 

  // If the first cast succeeded, don't bother to attempt it again.

  if(firstAttemptFailed == true)

  {

    // Let the API throw the actual exception if the second attempt also fails.

    dVal = boost::lexical_cast<double>(theValue);

  }

 

The string sequence this fails on is:

...

...

"7104",

"0.416666699999999999983",

"0.22222224",

"4.08233160000000000001",

"1.81436960000000000002",

...

...

 

It fails on the last string, "1.81.....", in the actual program, but when compiled into a simple test program, it succeeds.

 

If there is a known bug, we may be able to get a Boost upgrade installed.

 

Thanks,

Mike