benny5609的专栏

人生,到世上走一遭,只不过是单纯的体验与学习认识,当我们在临死的时候,可以光荣地对自己说:"我已领略过"便不枉此生。...

将CString转换为double(或float)的3种方法

CString strFloat;
float flt;

//method1:
flt = (float)atof((char *)(LPTSTR)(LPCTSTR)mstrFloat);

//method2:
flt = (float)atof((char *)m_eps.GetBuffer(strFloat.GetLength()));
strFloat.ReleaseBuffer();

//method3:
//Convert CString to double
static BOOL _AtlSimpleFloatParse(LPCTSTR lpszText, double& d)  
{  
    ATLASSERT(lpszText != NULL);  
    while (*lpszText == ' '|| *lpszText == '/t') 
    {
        lpszText++;  
    }

    TCHAR chFirst = lpszText[0];  
    d = _tcstod(lpszText,(LPTSTR*)&lpszText);  
    if (d == 0.0 && chFirst != '0') 
    {
        return FALSE;    //could not convert  
    }
    while (*lpszText == ' '|| *lpszText == '/t')
    {
        lpszText++;  
    }

    if (*lpszText != '/0') 
    {
        return FALSE;    //not terminated properly  
    }

    return TRUE;  
}

不过前面两种方法在VS2005下运行结果不正确,在VC6.0开发环境下是可以的。
 
阅读更多
文章标签: float null
个人分类: C/C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭