这应该是一个简单的任务,但我收到一个包含数字“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[];
如果我添加这一行:
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”,而不是在写入文件之前我在断点处看到的值。
感谢任何帮助或指示。感谢。
答案 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()原因无效的原因,请发帖。我正在回答这个问题,希望它可以在同样的情况下帮助其他人。