1

我用VS2010在windows 7下搭建了一个MFC程序,想在生成的报表中格式化float数据。

我曾尝试使用 %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());

预期成绩:

通过, 1.2, 3.4, 5.67

实际结果:

通过,%f,%f,%f

4

1 回答 1

1

它不会自己填写格式字符串,您必须调用一个函数才能这样做。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。这真的是你想要的吗?确保在您的问题中始终包含一个最小、完整和可验证的示例,它们可以更容易地为您提供帮助。

于 2019-02-18T10:40:06.767 回答