我正在使用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&gt;&gt; m_text”是否意味着存储到文件中的值将被读入m_text并显示在屏幕上?我可以这样做吗
ar>>m_text1>> "+" >>m_text2>> "=" >>m_text;
输出“Addend1 + Addend2 = Result”?
在ExView.cpp文件中,我是否必须添加一些行来执行输出,或者最后一个命令可以用于执行float-&gt;字符串?
抱歉我的英文不好:D
谢谢:D
答案 0 :(得分:0)
您可以使用这样的代码将float转换为string:
CString s;
s.Format(_T("%f"), floatvariable);
它也可用于构建所需的输出字符串:
s.Format(_T("%f + %f = %f"), Addend1, Addend2, Result);
CArchive的东西不会显示任何屏幕内容,也不会连接字符串。实际上,CArchive不会创建普通的文本文件,因此它可能根本不适合您文件中的内容。
答案 1 :(得分:0)
你做错了!
不要在对话框中使用text或CString变量。而是定义浮点数或双精度变量。我想你正在使用浮动......
// 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
}
}