【发布时间】:2020-08-07 22:51:09
【问题描述】:
我正在尝试使用 Visual C++ Windows 窗体构建数独求解器。所以我使用多个文本框创建了以下布局,然后将它们从 String 转换为 int。但问题就在这里。如何将 81 个变量从字符串转换为变量。
这就是我所做的
private: System::Void Button1_Click(System::Object^ sender, System::EventArgs^ e) {
int j[81];
j[0] = System::Convert::ToInt16(i1->Text);
j[1] = System::Convert::ToInt16(i2->Text);
j[2] = System::Convert::ToInt16(i3->Text);
j[3] = System::Convert::ToInt16(i4->Text);
j[4] = System::Convert::ToInt16(i5->Text);
j[5] = System::Convert::ToInt16(i6->Text);
j[6] = System::Convert::ToInt16(i7->Text);
j[7] = System::Convert::ToInt16(i8->Text);
j[8] = System::Convert::ToInt16(i9->Text);
}
这是一项艰巨的任务。我想过将它们一一转换并存储到数组中以供进一步计算,但是有81个文本框。
有没有更好的方法来做到这一点,例如增加变量名称,如 i1 ,i2, i3 ...in 然后将它们分配给数组
【问题讨论】:
-
“有没有更好的方法来做到这一点,例如通过增加变量名称,如 i1 ,i2, i3 ...in 然后将它们分配给一个数组” - 如果这实际上是 .NET 那么你可以做到这一点,是的,使用反射。如果这是一个 C++ 对象,那么我不这么认为。但是,无论您可以通过反射来做到这一点,还是必须通过写出所有字段来做到这一点,我仍然会这样做,是的:可能构建一个文本框对象的数组或二维数组作为表单对象中的一个字段。
-
您可能还需要除 ToInt16 之外的其他东西,因为您必须将一些正方形留空。还是您希望用户为这些输入 0?
-
大多数时候,这样的事情是由于糟糕的代码设计造成的,但有时可能会有所不同。在这种情况下,我将代码复制/粘贴到 Excel 中,使用自动填充(带增量)完成并复制回来。这可能需要在此处和此处添加(临时)空格(或制表符)列,以便 Excel 将代码拆分为足够的列。为此,VS(或Notepad++)的块编辑功能很适合。
标签: visual-studio visual-c++ c++-cli windows-forms-designer