如何获取字符串数组的长度,如
str 30 name[];//dynamic array
我使用以下内容来获取长度,但它显示错误为“变量不属于CLASS类型。”
int len=name.get_length();
答案 0 :(得分:4)
听起来您可能更乐意使用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()));
}
答案 1 :(得分:2)
您需要dimOf
功能。看一下参考文献:
答案 2 :(得分:2)
抱歉,没有内置函数来返回字符串数组大小。由于您可以完全控制放入数组中的内容,因此无需任何操作!
内置函数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)实际上可能会增加数组的分配大小。