格式漂浮在C MFC中

format float in C++ mfc

本文关键字:MFC 漂浮 格式      更新时间:2023-10-16

我使用VS2010在Windows 7中构建MFC程序。我想在生成的报告中格式化浮点数据。

我尝试使用%f,但报告中显示了"%f"。

CString m_Iwork_min;
struct   m_report_info;
m_Iwork_min = ......;
......
m_report_info.Iwork = "Pass, %f, %f, %f", atof(m_Iwork_min), 
atof(m_Iwork_max), atof(Value[0].c_str());

预期结果:

Pass,1.2,3.4,5.67

实际结果:

通过,%f,%f,%f

它不会单独填充格式字符串,您必须调用功能才能这样做。snprintf可以用于此,但是在您的情况下,您可能正在寻找CString::Format。很难说您的代码中发生了什么,因为没有MCVE,所以我做了一些假设,并进行了以下操作:

#include <tchar.h>
#include <atlstr.h>
#include <string>
int main()
{
    CString m_Iwork_min = "1.2";
    CString m_Iwork_max = "3.4";
    std::string Value[] = { "5.67", "foo", "bar" };
    CString Iwork;
    Iwork.Format(_T("Pass, %lf, %lf, %lf"), _tstof(m_Iwork_min),
        _tstof(m_Iwork_max), atof(Value[0].c_str()));
    _tprintf(_T("%s"), (LPCTSTR)Iwork);
    return 0;
}

输出:

通行证,1.200000,3.400000,5.670000

代码中的c_str使您看起来像是要混合CStringstd::string。这真的是您的意图吗?确保在您的问题中始终包含最小,完整和可验证的示例,它们使您更容易为您提供帮助。