C++ cli 如何在c++/cli

C++ cli 如何在c++/cli,c++-cli,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, th

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

//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值

Codeinput->Text[i-1]返回wchar\u 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()));
}
该列表可以像数组一样通过索引进行访问:

nums[i]

因此,使用它很方便。最重要的是,不必担心释放内存。

您需要迭代文本框字符,大概是通过输入->文本[i]。但是我应该从大小1变为0。@MalcolmMcLean:最好不要,否则你的循环将永远运行。OP是正确的,如果我们忽略了这一点,那并不重要,因为< C++ > C++ >代码>从来没有被使用过。这些是C++与.NET互操作的不同迭代,而托管C++仅在Visual Studio 2005中。@ CrasMSTR:我赞成你澄清我。我从来不知道管理C++和C++/CLI有什么区别!可能与您发布的代码重复。如何添加此代码的功能以及它如何回答问题的解释,使其成为更好的答案?@crashmstr-我不是以英语为母语的人,因此我很难用英语写作。我做得很慢,折磨着翻译。很容易写代码,很难用英语写。
nums[i]