我有一个 Ada95 程序,我必须在其中创建一个字符串数组。该数组可以包含可变长度的字符串。
示例: 我已经声明了一个数组,其中所有索引都可以存储大小为 50 的字符串。当我为上面的数组分配一个较小的字符串时,我得到“约束错误”。
代码:
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
或 Wide_Wide_String
类型,但不能有其他类型; Ada 中的赋值通常要求目标和源是同一类型。要将 String
转换为 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;
并不是每个人都喜欢这种风格。
关于arrays - Ada 中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684909/