вы можете просто сделать
CString pi = "3.14";
return atof(pi);
EDIT
Также используйте эту функцию:
CString pi = "3.14";
return _ttof(pi);
Чтение строкового значения и его анализ / преобразование в число с плавающей запятой позволяет определить местонахождение ошибки при ее наличии. Все, что вам нужно, это помощь функции времени выполнения C: strtod () или atof ().
Я бы предпочел strtod, так как второй аргумент возвращает указатель на строку, где разбор закончился:
CString str;
m_edtMyEditBox.GetWindowText(str);
char *pEnd;
double dValue = strtod(str.GetBuffer(str.GetLength()), &pEnd);
if (*pEnd != '\0')
{
// Error in parsing
}
str.ReleaseBuffer();