【问题标题】:Convert CString to float in mfc将 CString 转换为 mfc 中的浮点数
【发布时间】:2011-08-12 22:12:25
【问题描述】:

如何将 CString 变量转换为浮点数? (我正在使用 visuall c++ 6.0 和 MFC)

我正在尝试使用编辑框返回一个值,我将其放入浮点数组中。我正在使用 GetWindowText 方法来获取返回 CString 的值。所以我需要转换为浮点数。 (或者我只是以完全错误的方式做事?)。

我认为 MFC 中已经有方法可以做到这一点。(已经使用 Format 方法将 CString 转换为在编辑框中显示数组中的值)

谢谢。

【问题讨论】:

    标签: c++ visual-c++ mfc


    【解决方案1】:

    你可以这样做

        CString pi = "3.14";
        return atof(pi);
    

    编辑

    也使用这个功能:

        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();
    

    【讨论】:

    • 如果他要使用_ttof(),我认为应该是CString pi = _T("3.14");
    • @MikMik:如果应用程序支持 unicode 字符,那么您应该使用 _T() 宏,否则不需要该宏。
    • 首先,现在是 2011 年。应用程序应该支持 Unicode。其次,如果应用程序支持 Unicode,您应该使用 L"String" 和 _wtof。如果没有,“字符串”和 atof。 _T("String") 和 _ttof 是根据项目设置映射到正确版本的通用版本。但是混合 "String" 和 _ttof 就是将 ANSI 文字与泛型函数混合在一起,这在非 unicode 构建中意外地起作用,但这是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2013-10-09
    • 1970-01-01
    • 2014-08-23
    • 2011-12-10
    • 2011-04-12
    • 2011-09-07
    相关资源
    最近更新 更多