0

这应该是一个简单的任务,但我收到的文件包含数字“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 而不是 numericUpDown 组件中的值在文件中打印“1”?我怎样才能解决这个问题?我可以执行另一种写入文件的方法吗?

更新/当前失败的尝试

如果我添加这一行:

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

在“设置 << ta[i]->Value ...”行之前,使用断点我可以看到“temp”保持预期值,并且 ta[i]->Value.ToString() 正在工作。因此,当 ta[i]->Value.ToString() 与 << 运算符一起使用时,必须进行某些更改,以便我在文件中收到“1”,而不是在之前的断点处看到的值被写入文件。

任何帮助或方向表示赞赏。谢谢。

4

1 回答 1

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() 最初不起作用的原因,请发布。我正在回答这个问题,希望它可以帮助处于相同情况的其他人。

于 2013-04-05T23:26:21.447 回答