在 C++ mfc 中格式化浮点数
format float in C++ mfc
我在windows中用VS2010搭建了一个MFC程序 7.我想对生成的报表中的浮点数据进行格式化。
我曾尝试使用 %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
实际结果:
Pass, %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;
}
输出:
Pass, 1.200000, 3.400000, 5.670000
您代码中的 c_str
使您看起来像是想要 CString
和 std::string
的混合。这真的是你想要的吗?确保在您的问题中始终包含一个最小的、完整的和可验证的示例,它们可以更轻松地帮助您。
我在windows中用VS2010搭建了一个MFC程序 7.我想对生成的报表中的浮点数据进行格式化。
我曾尝试使用 %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
实际结果:
Pass, %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;
}
输出:
Pass, 1.200000, 3.400000, 5.670000
您代码中的 c_str
使您看起来像是想要 CString
和 std::string
的混合。这真的是你想要的吗?确保在您的问题中始终包含一个最小的、完整的和可验证的示例,它们可以更轻松地帮助您。