use*_*897 0 string constraintexception ada
我有一个数组,其中包含最多20个字符的字符串:
subtype c_string is string(1..20);
type string_array is array (natural range 1..100) of c_string;
Run Code Online (Sandbox Code Playgroud)
当我尝试将字符串分配给string_array的位置时,如果字符串不是20个字符长,则会出现以下错误:
提出CONSTRAINT_ERROR :( ...)长度检查失败
这是导致问题的代码行:
str_a: string_array;
(....)
str_a(n) := "stringToAssign" --Causes error
Run Code Online (Sandbox Code Playgroud)
避免这种情况的最佳方法是什么?
你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;
Run Code Online (Sandbox Code Playgroud)
然后
Str_A : String_Array;
Str_A (N) := B_Strings.To_Bounded_String (“stringToAssign”);
Run Code Online (Sandbox Code Playgroud)
Ada Wikibook还有更多内容.