mfc - float to string,将其存储在文件中并从文件中读取

时间:2015-01-15 14:48:03

标签: string file mfc output

我正在使用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

2 个答案:

答案 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
   }
}