从ofstream输出NumericUpDown值

Printing a NumericUpDown value out of a ofstream

本文关键字:NumericUpDown 输出 ofstream      更新时间:2023-10-16

这应该是一个简单的任务,但是我收到一个包含数字"1"的文件,而不是numericUpDown控件的内容。使用断点,我可以看到的值ta[i]->Value是我期望的值,但在转换后,我在文件中得到1而不是值。

     private: void storePreviousSettings()
{
    ofstream settings("prev_settings.txt");
    if(settings.is_open())
    {
        settings << "#ta" << endl;
        for(int i = 0; i < 16; i++)
        {
            settings << ta[i]->Value.ToString() << endl;
        }
        settings << "End" << endl;
        settings.close();
    }
}

注意:ta的定义如下:

private: NumericUpDown * ta[];

为什么我用ofstream打印一个"1"到文件,而不是在numericUpDown组件中的值?我该如何解决这个问题?是否有其他方法可以执行写入文件?

更新/当前失败尝试

如果我加上这行:

System::String * temp = ta[i]->Value.ToString();

设置<<ta[i]->Value…"行,使用断点我可以看到"temp"保持预期的值,并且ta[i]->Value. tostring()正在工作。所以当ta[i]->Value.ToString()与<<操作符必须改变一些东西,以便我在文件中收到一个"1",而不是我在写入文件之前在断点处看到的值。

任何帮助或指导都是感激的。谢谢。

这个问题已经解决了,使用下面的转换将Decimal转换为double。

    private: void storePreviousSettings()
{
    ofstream settings("prev_settings.txt");
    if(settings.is_open())
    {
        settings << "#ta" << endl;
        for(int i = 0; i < 16; i++)
        {
            settings << System::Decimal::ToDouble(ta[i]->Value) << endl;
        }
        settings << "End" << endl;
        settings.close();
    }
}

如果有人知道为什么使用。tostring()最初不工作的原因,请发帖。我回答这个问题是希望它能帮助到其他有同样情况的人。