Расхождение между оператором istream >> (double & val) между libc ++ и libstdc ++

С моим недавним обновлением до Mac OS X 10.9 стандартная библиотека C ++ по умолчанию изменилась с libstdc ++ на libc ++. С тех пор я наблюдаю неожиданное поведение оператора stringstream >>(двойной) задокументировано в примере кода ниже.

Таким образом, в libc ++, похоже, возникают проблемы с извлечением двойных значений из строковых потоков, когда за двойным значением следует буква.

Я уже проверил стандарт (2003), но могуНе можете найти какую-либо конкретную информацию, если извлечение должно работать в этом случае или нет.

Поэтому я был бы благодарен за любой вклад, будь то ошибка в libc ++ или libstdc ++.

#include 
#include 

using namespace std;

void extract_double(const string & s)
{
  stringstream ss;
  double d;

  ss < s;
  ss >> d;
  if(!ss.fail())
    cout < "'" < ss.str() < "' converted to " < d < endl;
  else
    cout < "'" < ss.str() < "' failed to convert to double" < endl;
}

int main()
{
  extract_double("-4.9");
  extract_double("-4.9 X");
  extract_double("-4.9_");
  extract_double("-4.9d");
  extract_double("-4.9X");
}

Ответы на вопрос(1)

Ваш ответ на вопрос