2

我有一个包含最多 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

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

4

1 回答 1

8

最多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中还有更多内容。

于 2014-03-04T17:45:36.840 回答