如何在 C++/cli 中将文本框转换为整数数组

How to covert Textbox to integer array in c++/cli

我正在尝试将文本框转换为整数数组,假设文本框的每个字符都是数字。

//textbox is named input
int size = this->input->Text->Length;
int * num = new int[size];
int Counter = 0;

//for loop used since textbox inputs like a calculator
//Ex: the number: 234 is inputed: 2, then 23, then 234
for (int i = size; i > 0; i--)
{
    num2[Counter] = System::Convert::ToInt32(input->Text[i-1]);
    Counter += 1;
}

数字数组应该是:

num[0] = 4, num[1] = 3, num[2] = 2 

经过研究,它似乎找到了整数 unicode 值。

Code input->Text[i-1] returns wchar_t 类型的单个 Unicode 字符值。即隐式转换为Int32,即符号代码。

您必须先将字符转换为字符串,然后再转换为数字。为此,您可以使用 Substring 方法或 ToString 方法。

您可以按照以下方式进行:

String^ text = this->input->Text;
int size = text->Length;
int * num = new int[size];

for (int i = size - 1; i >= 0; i--) {
    num[i] = Convert::ToInt32(text->Substring(size - i - 1, 1));
}

但是,您不应混合托管和非托管代码。

有更好的办法。使用通用集合而不是数组。

String^ text = this->input->Text;
int size = text->Length;
List<int>^ nums = gcnew List<int>();

for (int i = size - 1; i >= 0; i--) {
    nums->Add(Convert::ToInt32(text[i].ToString()));
}

别忘了

using namespace System::Collections::Generic;

列表可以像数组一样通过索引访问:

nums[i]

工作起来很方便。最重要的是,无需担心释放内存。