字符串CONSTRAINT_ERROR长度检查失败

时间:2014-03-04 17:07:40

标签: string ada constraintexception

我有一个数组,其中包含最多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

避免这种情况的最佳方法是什么?

1 个答案:

答案 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还有更多内容。