0

我正在制作一个基本的 GUI 密码创建器,它在 C++ 中创建字母、数字和符号的随机序列(它是一个 Windows 窗体应用程序)。我正在使用 numericUpDown 对象来检索用户输入的密码长度。我正在尝试使用该数字作为长度来定义一个 char 数组,但我收到一条错误消息,提示“预期的常量表达式”。我尝试将其定义为常量变量,但即使这样也不起作用。有什么解决方法吗?

下面的代码是按下“随机化”按钮时执行的部分代码(提示创建密码然后显示的按钮。

const int length = System::Convert::ToInt16(numericUpDown1->Value);

然后在程序的后面:

char p[length];
4

1 回答 1

2

您不能在 c++ 中声明具有可变大小的数组(对于 c++/cli 也是如此)。

听起来您想生成一个随机字符数组并将其转换为System::String(System::String是不可变的,因此您需要该数组来操作数据)。为此,您需要使用 a array<wchar_t>

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);

编辑:如果您想知道为什么在 c++/cli 中使用 awchar_t而不是:类似于.NET 使用的字符类型。 将类似于(有符号字节)。charwchar_tSystem::CharcharSystem::SByte

于 2013-08-08T02:39:57.480 回答