我有一个数组,其中包含最多20个字符的字符串:
subtype c_string is string(1..20);
type string_array is array (natural range 1..100) of c_string;
当我尝试将字符串分配给string_array的位置时,如果字符串长度不是20个字符,则会出现以下错误:
引发CONSTRAINT_ERROR :( ...)长度检查失败
这是导致问题的代码行:
str_a: string_array;
(....)
str_a(n) := "stringToAssign" --Causes error
避免这种情况的最佳方法是什么?
答案 0 :(得分:6)
您的c_string
无法容纳20个字符的最大;它保持完全 20个字符,因此是CE。
如果您有上限,则可以使用Ada.Strings.Bounded
;如果您实际上没有上限,则可以使用Ada.Strings.Unbounded
。
在有界的情况下,这就像是
package B_Strings is new Ada.Strings.Bounded.Generic_Bounded_Length (Max => 20);
type String_Array is array (1 .. 200) of B_Strings.Bounded_String;
然后
Str_A : String_Array;
Str_A (N) := B_Strings.To_Bounded_String (“stringToAssign”);
Ada Wikibook还有更多内容。