mfc - 浮动到字符串,将其存储在文件中并从文件中读取
mfc - float to string, storing it in file and read it from file
我正在使用 visual studio 2010 创建 MFC 应用程序。
我必须使用带有 2 个编辑控件的对话框,输入到编辑控件中的值我必须在屏幕上添加和打印,如:"Addend1 + Addend2 = Result"。
现在,我使用 _ttof() 函数从字符串中获取浮点数,在添加两个值后我使用哪个函数从浮点数中获取字符串?
而且,在那之后,我将不得不将它存储在文件中并阅读它。我是这样做的:
void CseminarskiDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
ar << m_text;
}
else
{
// TODO: add loading code here
ar >> m_text;
}
}
这一行 "ar>> m_text" 是否意味着存储到文件中的值将被读入 m_text 并显示在屏幕上?我可以这样做吗
ar>>m_text1>> "+" >>m_text2>> "=" >>m_text;
要有像 "Addend1 + Addend2 = Result"?
这样的输出
在 ExView.cpp 文件中,我是否必须添加一些行来进行输出,或者最后一个命令可以作为 float-> string 的函数?
抱歉我的英语不好:D
谢谢 :D
您可以使用这样的代码将浮点数转换为字符串:
CString s;
s.Format(_T("%f"), floatvariable);
它也可以用来构建你想要的输出字符串:
s.Format(_T("%f + %f = %f"), Addend1, Addend2, Result);
CArchive 不会在屏幕上显示任何内容,也不会连接字符串。事实上,CArchive 不会创建普通的文本文件,因此它可能根本不适合您在文件中想要的内容。
你做错了!
不要在对话框中使用文本或 CString 变量。而是定义 float 或 double 变量。我猜你正在使用 float...
// members of class CZBroj in your ZBroj.h
float m_fVar1;
float m_fVar2;
void CZBroj::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_fVar1); // if not IDC_EDIT1, change to correct ID
DDX_Text(pDX, IDC_EDIT2, m_fVar2);
}
void CseminarskiView::OnEditZbroj()
{
CseminarskiDoc* pDoc = GetDocument();
CZbroj dlg; // deklariranje dijaloga
dlg.m_fVar1 = 3.4; //use whatever value you want to initialize with
dlg.m_fVar2 = 1.414; // again, init with whatever you want, or be sure to init in constructor
if (IDOK == dlg.DoModal())
{
// respond appropriately
// dlg.m_fVar1,dlg.m_fVar2 will contain the edited values...magic of DDX_Text
}
}
我正在使用 visual studio 2010 创建 MFC 应用程序。 我必须使用带有 2 个编辑控件的对话框,输入到编辑控件中的值我必须在屏幕上添加和打印,如:"Addend1 + Addend2 = Result"。 现在,我使用 _ttof() 函数从字符串中获取浮点数,在添加两个值后我使用哪个函数从浮点数中获取字符串? 而且,在那之后,我将不得不将它存储在文件中并阅读它。我是这样做的:
void CseminarskiDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
ar << m_text;
}
else
{
// TODO: add loading code here
ar >> m_text;
}
}
这一行 "ar>> m_text" 是否意味着存储到文件中的值将被读入 m_text 并显示在屏幕上?我可以这样做吗
ar>>m_text1>> "+" >>m_text2>> "=" >>m_text;
要有像 "Addend1 + Addend2 = Result"?
这样的输出在 ExView.cpp 文件中,我是否必须添加一些行来进行输出,或者最后一个命令可以作为 float-> string 的函数?
抱歉我的英语不好:D
谢谢 :D
您可以使用这样的代码将浮点数转换为字符串:
CString s;
s.Format(_T("%f"), floatvariable);
它也可以用来构建你想要的输出字符串:
s.Format(_T("%f + %f = %f"), Addend1, Addend2, Result);
CArchive 不会在屏幕上显示任何内容,也不会连接字符串。事实上,CArchive 不会创建普通的文本文件,因此它可能根本不适合您在文件中想要的内容。
你做错了!
不要在对话框中使用文本或 CString 变量。而是定义 float 或 double 变量。我猜你正在使用 float...
// members of class CZBroj in your ZBroj.h
float m_fVar1;
float m_fVar2;
void CZBroj::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_fVar1); // if not IDC_EDIT1, change to correct ID
DDX_Text(pDX, IDC_EDIT2, m_fVar2);
}
void CseminarskiView::OnEditZbroj()
{
CseminarskiDoc* pDoc = GetDocument();
CZbroj dlg; // deklariranje dijaloga
dlg.m_fVar1 = 3.4; //use whatever value you want to initialize with
dlg.m_fVar2 = 1.414; // again, init with whatever you want, or be sure to init in constructor
if (IDOK == dlg.DoModal())
{
// respond appropriately
// dlg.m_fVar1,dlg.m_fVar2 will contain the edited values...magic of DDX_Text
}
}