从流中打印NumericUpDown值

时间:2013-03-18 19:24:22

标签: c++ visual-c++ io ofstream

这应该是一个简单的任务,但我收到一个包含数字“1”的文件,而不是numericUpDown控件的内容。使用断点我可以看到来自的值 ta [i] - >值是我期望的值,但是在转换后我在文件中得到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而不是numericUpDown组件中的值打印文件“1”?我怎样才能解决这个问题?我可以执行另一种写入文件的方法吗?

更新/当前失败尝试

如果我添加这一行:

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

在“设置&lt;&lt; ta [i] - &gt; Value ...”行之前,使用断点我可以看到“temp”保持期望值,并且ta [i] - &gt; Value。 ToString()正在运行。因此,当ta [i] - &gt; Value.ToString()与&lt;&lt;一起使用时运算符必须改变才能让我在文件中收到“1”,而不是在写入文件之前我在断点处看到的值。

感谢任何帮助或指示。感谢。

1 个答案:

答案 0 :(得分:0)

使用Decimal上的以下转换将问题解决,使其成为双倍。

    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()原因无效的原因,请发帖。我正在回答这个问题,希望它可以在同样的情况下帮助其他人。