元胞数组的一个常见用途是将多个字符串存储在同一个变量中。虽然也可以通过让每一行作为一个字符串的方式,将多个字符串存储在字符矩阵中,但这会引入一个问题:所有字符串必须具有相同的长度。因此,建议使用元胞数组来存储多个字符串。对于某些需要字符矩阵表示的操作,有几个函数可以在字符串的元胞数组与字符数组之间进行转换。char 和 strvcat 将元胞数组转换为字符数组(参见 连接字符串),而 cellstr 函数则将字符数组转换为字符串的元胞数组:
a = ["hello"; "world"];
c = cellstr (a)
⇒ c =
{
[1,1] = hello
[2,1] = world
}
cstr = cellstr (strmat) ¶根据字符串数组 strmat 的元素创建一个新的元胞数组对象。
strmat 的每一行成为 cstr 的一个元素。转换前,行尾的所有空格将被删除。
要从元胞字符串转换回字符数组,请使用 char。
使用元胞数组存储多个字符串的另一个优点是,Octave 附带的大多数字符串操作函数都支持这种表示形式。例如,可以使用 strcmp 函数将一个字符串与多个其他字符串进行比较。如果该函数的一个参数是字符串,另一个参数是字符串的元胞数组,则元胞数组中的每个元素都会与该字符串参数进行比较:
c = {"hello", "world"};
strcmp ("hello", c)
⇒ ans =
1 0
以下字符串函数支持字符串的元胞数组:char、strvcat、strcat(参见 连接字符串)、strcmp、strncmp、strcmpi、strncmpi(参见 在字符串中搜索)、str2double、deblank、strtrim、strtrunc、strfind、strmatch、regexp、regexpi(参见 字符串操作)以及 str2double(参见 转换字符串)。
函数 iscellstr 可用于测试一个对象是否为字符串的元胞数组。