2013-09-30 129 views
1

如何獲得一個字符串數組的長度等如何獲取數組的長度?

str 30 name[];//dynamic array 

我用於獲取長度以下,但它示出了誤差爲「變量是類型的類不」。

int len=name.get_length(); 

回答

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)可能實際上增加的分配大小陣列。

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