在Ada中初始化固定长度字符串的最佳方法是什么?

时间:2018-06-25 10:27:42

标签: string ada bounded-types

我想要在Ada中或多或少地初始化固定长度的String,如下所示:

S : String (1..256) := ("Hello", others => Character'Val (0));

尝试编译时出现错误。 有什么办法可以达到上述目的?

2 个答案:

答案 0 :(得分:5)

您的代码无法编译的原因是String是一个字符数组,因此等效

s : String(1..256) := (1 => 'H',
                       2 => 'e',
                       3 => 'l',
                       4 => 'l',
                       5=> 'o',
                       others => Character'Val(0));

这显然远非理想。

另一种方法是使用Ada.Strings.Fixed中的“移动”过程。

Move(Target => s,
     Source => "Hello",
     Pad => Character'Val(0));

但这不能在声明中完成。

最后,它会编译:

s : String(1..256) := "Hello" & (6..256 => Character'Val(0));

但我发现不清楚

答案 1 :(得分:1)

我通常会做类似的事情

Hello : constant String := "Hello";

Desired_Length : constant := 256;

S : String := Hello & (1 .. Desired_Length - Hello'Length => Character'Val (0) );

(Hello'Length + 1 .. Desired_Length => ...);