我在 Ada95 中有一个程序,我必须在其中创建一个字符串数组。该数组可以包含可变长度的字符串。
例子:
我已经声明了一个数组,其中所有索引都可以存储大小为 50 的字符串。当我为上面的数组分配一个较小的字符串时,我收到“约束错误”。
Code:
procedure anyname is
input_array : array(1..5) of String(1..50);
begin
input_array(1):="12345";
end anyname;
我尝试创建 Unbounded_Strings 数组。但这也行不通。谁能告诉我如何将这个“12345”存储在上面的字符串数组中?
如果你使用Unbounded_String
,您不能直接为其分配字符串文字。字符串文字可以有类型String
, Wide_String
, or Wide_Wide_String
, 但没有别的; Ada 中的赋值通常要求目标和源是同一类型。要转换一个String
to an Unbounded_String
,您需要致电To_Unbounded_String
功能:
procedure anyname is
input_array : array(1..5) of Ada.Strings.Unbounded.Unbounded_String;
begin
input_array(1) := Ada.Strings.Unbounded.To_Unbounded_String ("12345");
end anyname;
您可以使用以下方法缩短名称use
条款;其他一些程序员可能会定义自己的重命名函数,甚至可能使用一元"+"
操作员:
function "+" (Source : String) return Ada.Strings.Unbounded.Unbounded_String
renames Ada.Strings.Unbounded.To_Unbounded_String;
procedure anyname is
input_array : array(1..5) of Ada.Strings.Unbounded.Unbounded_String;
begin
input_array(1) := +"12345"; -- uses renaming "+" operator
end anyname;
不是每个人都喜欢这种风格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)