Winforms 为什么来自numericUpDown对象的输入不被视为常量? 我正在制作一个基本的GUI密码创建器,它在C++中创建一个随机的字母、数字和符号序列(它是一个Windows窗体应用程序)。我使用numericUpDown对象检索用户输入的密码长度。我试图用这个数字作为长度来定义一个字符数组,但是我得到了一个错误,上面写着“expected constant expression”。我试图将它定义为一个常量变量,但即使这样也不起作用。有什么解决办法吗
以下代码是按下“随机化”按钮(提示创建密码并显示密码的按钮)时执行的代码的一部分Winforms 为什么来自numericUpDown对象的输入不被视为常量? 我正在制作一个基本的GUI密码创建器,它在C++中创建一个随机的字母、数字和符号序列(它是一个Windows窗体应用程序)。我使用numericUpDown对象检索用户输入的密码长度。我试图用这个数字作为长度来定义一个字符数组,但是我得到了一个错误,上面写着“expected constant expression”。我试图将它定义为一个常量变量,但即使这样也不起作用。有什么解决办法吗,winforms,user-interface,c++-cli,Winforms,User Interface,C++ Cli,以下代码是按下“随机化”按钮(提示创建密码并显示密码的按钮)时执行的代码的一部分 const int length = System::Convert::ToInt16(numericUpDown1->Value); 然后在节目的后面: char p[length]; 不能声明C++中的可变大小的数组(对于C++ + CLI同样如此)。 听起来您想生成一个随机字符数组,并将其转换为System::String(System::String是不可变的,因此需要数组来处理数据)。为此,您需
const int length = System::Convert::ToInt16(numericUpDown1->Value);
然后在节目的后面:
char p[length];
不能声明C++中的可变大小的数组(对于C++ + CLI同样如此)。 听起来您想生成一个随机字符数组,并将其转换为
System::String
(System::String
是不可变的,因此需要数组来处理数据)。为此,您需要使用数组
array<wchar_t>^ data = gcnew array<wchar_t>(System::Convert::ToInt32(numericUpDown1->Value));
// fill each character in data with a random character.
System::String^ password = gcnew System::String(data);
array^data=gcnewarray(System::Convert::ToInt32(numericUpDown1->Value));
//用随机字符填充数据中的每个字符。
系统::字符串^password=gcnew系统::字符串(数据);
编辑:如果您想知道为什么用wchar\u t
而不是char
:在c++/cli中,wchar\u t
类似于.NET使用的字符类型System::char
。char
类似于System::SByte
(带符号的字节).发布代码。描述很好,但如果没有任何代码,就很难帮助您。