如何获取字符串数组的长度,例如
str 30 name[];//dynamic array
我使用以下方法获取长度,但它显示错误为“变量不是 CLASS 类型”。
int len=name.get_length();
如何获取字符串数组的长度,例如
str 30 name[];//dynamic array
我使用以下方法获取长度,但它显示错误为“变量不是 CLASS 类型”。
int len=name.get_length();
听起来您可能会更高兴使用Array
集合类。
http://msdn.microsoft.com/en-us/library/array.aspx
static void TestArray(Args _args)
{
Array strArray = new Array(Types::String);
;
strArray.value(1, 'abc');
strArray.value(2, 'def');
info(strfmt("%1", strArray.lastIndex()));
}
你需要这个dimOf
功能。看看参考资料:
抱歉,没有返回字符串数组大小的内置函数。由于您可以完全控制放入数组中的内容,因此不需要任何内容!
内置函数dimof
返回分配的数组大小,仅对固定大小的数组有实际价值,如str 30 name[20]
,其中dimof(name)
返回 20。
保持控制的一种干净方法是使用 setter 函数:
static void TestArray(Args _args)
{
str 30 name[];
int n = 0;
int i;
void nameSet(int _i, str 30 _name)
{
n = max(n,_i);
name[_i] = _name;
}
;
nameSet(2,'abc');
nameSet(4,'def');
for (i = 1; i <= n; i++)
info(name[i]);
}
没有上限索引限制,因此访问name[7]
是完全有效的,在这种情况下返回一个空白值。如果您始终使用所有孔并且从不存储空白,这可能对您有利:
static void TestArray(Args _args)
{
str 30 name[];
int i;
name[1] = 'abc';
name[2] = 'def';
for (i = 1; name[i]; i++)
info(name[i]);
}
请注意,访问更高的索引(在这种情况下高于 2)实际上可能会增加数组的分配大小。